File: /usr/src/linux/include/asm-sparc64/posix_types.h

1     #ifndef __ARCH_SPARC64_POSIX_TYPES_H
2     #define __ARCH_SPARC64_POSIX_TYPES_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_size_t;
11     typedef long                   __kernel_ssize_t;
12     typedef long                   __kernel_ptrdiff_t;
13     typedef long                   __kernel_time_t;
14     typedef long                   __kernel_clock_t;
15     typedef int                    __kernel_pid_t;
16     typedef int                    __kernel_ipc_pid_t;
17     typedef unsigned int           __kernel_uid_t;
18     typedef unsigned int           __kernel_gid_t;
19     typedef unsigned int           __kernel_dev_t;
20     typedef unsigned long          __kernel_ino_t;
21     typedef unsigned int           __kernel_mode_t;
22     typedef unsigned short         __kernel_umode_t;
23     typedef unsigned int           __kernel_nlink_t;
24     typedef int                    __kernel_daddr_t;
25     typedef long                   __kernel_off_t;
26     typedef char *                 __kernel_caddr_t;
27     typedef unsigned short	       __kernel_uid16_t;
28     typedef unsigned short	       __kernel_gid16_t;
29     
30     typedef __kernel_uid_t 	       __kernel_old_uid_t;
31     typedef __kernel_gid_t         __kernel_old_gid_t;
32     typedef __kernel_uid_t	       __kernel_uid32_t;
33     typedef __kernel_gid_t	       __kernel_gid32_t;
34     
35     /* Note this piece of asymmetry from the v9 ABI.  */
36     typedef int		       __kernel_suseconds_t;
37     
38     #ifdef __GNUC__
39     typedef long long              __kernel_loff_t;
40     #endif
41     
42     typedef struct {
43     #if defined(__KERNEL__) || defined(__USE_ALL)
44     	int	val[2];
45     #else /* !defined(__KERNEL__) && !defined(__USE_ALL) */
46     	int     __val[2];
47     #endif /* !defined(__KERNEL__) && !defined(__USE_ALL) */
48     } __kernel_fsid_t;
49     
50     /* Now 32bit compatibility types */
51     typedef unsigned int           __kernel_size_t32;
52     typedef int                    __kernel_ssize_t32;
53     typedef int                    __kernel_ptrdiff_t32;
54     typedef int                    __kernel_time_t32;
55     typedef int                    __kernel_clock_t32;
56     typedef int                    __kernel_pid_t32;
57     typedef unsigned short         __kernel_ipc_pid_t32;
58     typedef unsigned short         __kernel_uid_t32;
59     typedef unsigned short         __kernel_gid_t32;
60     typedef unsigned short         __kernel_dev_t32;
61     typedef unsigned int           __kernel_ino_t32;
62     typedef unsigned short         __kernel_mode_t32;
63     typedef unsigned short         __kernel_umode_t32;
64     typedef short                  __kernel_nlink_t32;
65     typedef int                    __kernel_daddr_t32;
66     typedef int                    __kernel_off_t32;
67     typedef unsigned int           __kernel_caddr_t32;
68     typedef long		       __kernel_loff_t32;
69     typedef __kernel_fsid_t        __kernel_fsid_t32;
70     
71     #if defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2)
72     
73     #undef __FD_SET
74     static __inline__ void __FD_SET(unsigned long fd, __kernel_fd_set *fdsetp)
75     {
76     	unsigned long _tmp = fd / __NFDBITS;
77     	unsigned long _rem = fd % __NFDBITS;
78     	fdsetp->fds_bits[_tmp] |= (1UL<<_rem);
79     }
80     
81     #undef __FD_CLR
82     static __inline__ void __FD_CLR(unsigned long fd, __kernel_fd_set *fdsetp)
83     {
84     	unsigned long _tmp = fd / __NFDBITS;
85     	unsigned long _rem = fd % __NFDBITS;
86     	fdsetp->fds_bits[_tmp] &= ~(1UL<<_rem);
87     }
88     
89     #undef __FD_ISSET
90     static __inline__ int __FD_ISSET(unsigned long fd, __const__ __kernel_fd_set *p)
91     { 
92     	unsigned long _tmp = fd / __NFDBITS;
93     	unsigned long _rem = fd % __NFDBITS;
94     	return (p->fds_bits[_tmp] & (1UL<<_rem)) != 0;
95     }
96     
97     /*
98      * This will unroll the loop for the normal constant cases (8 or 32 longs,
99      * for 256 and 1024-bit fd_sets respectively)
100      */
101     #undef __FD_ZERO
102     static __inline__ void __FD_ZERO(__kernel_fd_set *p)
103     {
104     	unsigned long *tmp = p->fds_bits;
105     	int i;
106     
107     	if (__builtin_constant_p(__FDSET_LONGS)) {
108     		switch (__FDSET_LONGS) {
109     			case 32:
110     			  tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
111     			  tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
112     			  tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0;
113     			  tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0;
114     			  tmp[16] = 0; tmp[17] = 0; tmp[18] = 0; tmp[19] = 0;
115     			  tmp[20] = 0; tmp[21] = 0; tmp[22] = 0; tmp[23] = 0;
116     			  tmp[24] = 0; tmp[25] = 0; tmp[26] = 0; tmp[27] = 0;
117     			  tmp[28] = 0; tmp[29] = 0; tmp[30] = 0; tmp[31] = 0;
118     			  return;
119     			case 16:
120     			  tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
121     			  tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
122     			  tmp[ 8] = 0; tmp[ 9] = 0; tmp[10] = 0; tmp[11] = 0;
123     			  tmp[12] = 0; tmp[13] = 0; tmp[14] = 0; tmp[15] = 0;
124     			  return;
125     			case 8:
126     			  tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
127     			  tmp[ 4] = 0; tmp[ 5] = 0; tmp[ 6] = 0; tmp[ 7] = 0;
128     			  return;
129     			case 4:
130     			  tmp[ 0] = 0; tmp[ 1] = 0; tmp[ 2] = 0; tmp[ 3] = 0;
131     			  return;
132     		}
133     	}
134     	i = __FDSET_LONGS;
135     	while (i) {
136     		i--;
137     		*tmp = 0;
138     		tmp++;
139     	}
140     }
141     
142     #endif /* defined(__KERNEL__) || !defined(__GLIBC__) || (__GLIBC__ < 2) */
143     
144     #endif /* !(__ARCH_SPARC64_POSIX_TYPES_H) */
145