Merge branch 'upstream-davem' of master.kernel.org:/pub/scm/linux/kernel/git/jgarzik...
[linux-2.6] / include / linux / posix_types.h
1 #ifndef _LINUX_POSIX_TYPES_H
2 #define _LINUX_POSIX_TYPES_H
3
4 #include <linux/stddef.h>
5
6 /*
7  * This allows for 1024 file descriptors: if NR_OPEN is ever grown
8  * beyond that you'll have to change this too. But 1024 fd's seem to be
9  * enough even for such "real" unices like OSF/1, so hopefully this is
10  * one limit that doesn't have to be changed [again].
11  *
12  * Note that POSIX wants the FD_CLEAR(fd,fdsetp) defines to be in
13  * <sys/time.h> (and thus <linux/time.h>) - but this is a more logical
14  * place for them. Solved by having dummy defines in <sys/time.h>.
15  */
16
17 /*
18  * Those macros may have been defined in <gnu/types.h>. But we always
19  * use the ones here. 
20  */
21 #undef __NFDBITS
22 #define __NFDBITS       (8 * sizeof(unsigned long))
23
24 #undef __FD_SETSIZE
25 #define __FD_SETSIZE    1024
26
27 #undef __FDSET_LONGS
28 #define __FDSET_LONGS   (__FD_SETSIZE/__NFDBITS)
29
30 #undef __FDELT
31 #define __FDELT(d)      ((d) / __NFDBITS)
32
33 #undef __FDMASK
34 #define __FDMASK(d)     (1UL << ((d) % __NFDBITS))
35
36 typedef struct {
37         unsigned long fds_bits [__FDSET_LONGS];
38 } __kernel_fd_set;
39
40 /* Type of a signal handler.  */
41 typedef void (*__kernel_sighandler_t)(int);
42
43 /* Type of a SYSV IPC key.  */
44 typedef int __kernel_key_t;
45 typedef int __kernel_mqd_t;
46
47 #include <asm/posix_types.h>
48
49 #endif /* _LINUX_POSIX_TYPES_H */