|
1 #ifndef _ASM_X86_POSIX_TYPES_64_H |
|
2 #define _ASM_X86_POSIX_TYPES_64_H |
|
3 |
|
4 /* |
|
5 * This file is generally used by user-level software, so you need to |
|
6 * be a little careful about namespace pollution etc. Also, we cannot |
|
7 * assume GCC is being used. |
|
8 */ |
|
9 |
|
10 typedef unsigned long __kernel_ino_t; |
|
11 typedef unsigned int __kernel_mode_t; |
|
12 typedef unsigned long __kernel_nlink_t; |
|
13 typedef long __kernel_off_t; |
|
14 typedef int __kernel_pid_t; |
|
15 typedef int __kernel_ipc_pid_t; |
|
16 typedef unsigned int __kernel_uid_t; |
|
17 typedef unsigned int __kernel_gid_t; |
|
18 typedef unsigned long __kernel_size_t; |
|
19 typedef long __kernel_ssize_t; |
|
20 typedef long __kernel_ptrdiff_t; |
|
21 typedef long __kernel_time_t; |
|
22 typedef long __kernel_suseconds_t; |
|
23 typedef long __kernel_clock_t; |
|
24 typedef int __kernel_timer_t; |
|
25 typedef int __kernel_clockid_t; |
|
26 typedef int __kernel_daddr_t; |
|
27 typedef char * __kernel_caddr_t; |
|
28 typedef unsigned short __kernel_uid16_t; |
|
29 typedef unsigned short __kernel_gid16_t; |
|
30 |
|
31 #ifdef __GNUC__ |
|
32 typedef long long __kernel_loff_t; |
|
33 #endif |
|
34 |
|
35 typedef struct { |
|
36 int val[2]; |
|
37 } __kernel_fsid_t; |
|
38 |
|
39 typedef unsigned short __kernel_old_uid_t; |
|
40 typedef unsigned short __kernel_old_gid_t; |
|
41 typedef __kernel_uid_t __kernel_uid32_t; |
|
42 typedef __kernel_gid_t __kernel_gid32_t; |
|
43 |
|
44 typedef unsigned long __kernel_old_dev_t; |
|
45 |
|
46 #ifdef __KERNEL__ |
|
47 |
|
48 #undef __FD_SET |
|
49 static inline void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp) |
|
50 { |
|
51 unsigned long _tmp = fd / __NFDBITS; |
|
52 unsigned long _rem = fd % __NFDBITS; |
|
53 fdsetp->fds_bits[_tmp] |= (1UL<<_rem); |
|
54 } |
|
55 |
|
56 #undef __FD_CLR |
|
57 static inline void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp) |
|
58 { |
|
59 unsigned long _tmp = fd / __NFDBITS; |
|
60 unsigned long _rem = fd % __NFDBITS; |
|
61 fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem); |
|
62 } |
|
63 |
|
64 #undef __FD_ISSET |
|
65 static inline int __FD_ISSET(unsigned long fd, __const__ __kernel_fd_set *p) |
|
66 { |
|
67 unsigned long _tmp = fd / __NFDBITS; |
|
68 unsigned long _rem = fd % __NFDBITS; |
|
69 return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0; |
|
70 } |
|
71 |
|
72 /* |
|
73 * This will unroll the loop for the normal constant cases (8 or 32 longs, |
|
74 * for 256 and 1024-bit fd_sets respectively) |
|
75 */ |
|
76 #undef __FD_ZERO |
|
77 static inline void __FD_ZERO(__kernel_fd_set *p) |
|
78 { |
|
79 unsigned long *tmp = p->fds_bits; |
|
80 int i; |
|
81 |
|
82 if (__builtin_constant_p(__FDSET_LONGS)) { |
|
83 switch (__FDSET_LONGS) { |
|
84 case 32: |
|
85 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; |
|
86 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; |
|
87 tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0; |
|
88 tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0; |
|
89 tmp[16] = 0; tmp[17] = 0; tmp[18] = 0; tmp[19] = 0; |
|
90 tmp[20] = 0; tmp[21] = 0; tmp[22] = 0; tmp[23] = 0; |
|
91 tmp[24] = 0; tmp[25] = 0; tmp[26] = 0; tmp[27] = 0; |
|
92 tmp[28] = 0; tmp[29] = 0; tmp[30] = 0; tmp[31] = 0; |
|
93 return; |
|
94 case 16: |
|
95 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; |
|
96 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; |
|
97 tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0; |
|
98 tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0; |
|
99 return; |
|
100 case 8: |
|
101 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; |
|
102 tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0; |
|
103 return; |
|
104 case 4: |
|
105 tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0; |
|
106 return; |
|
107 } |
|
108 } |
|
109 i = __FDSET_LONGS; |
|
110 while (i) { |
|
111 i--; |
|
112 *tmp = 0; |
|
113 tmp++; |
|
114 } |
|
115 } |
|
116 |
|
117 #endif /* defined(__KERNEL__) */ |
|
118 |
|
119 #endif /* _ASM_X86_POSIX_TYPES_64_H */ |