diff options
Diffstat (limited to 'meta/packages/xorg-lib/xorg-headers-native/X11/Xpoll.h')
-rw-r--r-- | meta/packages/xorg-lib/xorg-headers-native/X11/Xpoll.h | 255 |
1 files changed, 255 insertions, 0 deletions
diff --git a/meta/packages/xorg-lib/xorg-headers-native/X11/Xpoll.h b/meta/packages/xorg-lib/xorg-headers-native/X11/Xpoll.h new file mode 100644 index 0000000000..e483c21e13 --- /dev/null +++ b/meta/packages/xorg-lib/xorg-headers-native/X11/Xpoll.h | |||
@@ -0,0 +1,255 @@ | |||
1 | /* $Xorg: Xpoll.h,v 1.4 2001/02/09 02:03:23 xorgcvs Exp $ */ | ||
2 | |||
3 | /* | ||
4 | |||
5 | Copyright 1994, 1998 The Open Group | ||
6 | |||
7 | Permission to use, copy, modify, distribute, and sell this software and its | ||
8 | documentation for any purpose is hereby granted without fee, provided that | ||
9 | the above copyright notice appear in all copies and that both that | ||
10 | copyright notice and this permission notice appear in supporting | ||
11 | documentation. | ||
12 | |||
13 | The above copyright notice and this permission notice shall be included | ||
14 | in all copies or substantial portions of the Software. | ||
15 | |||
16 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS | ||
17 | OR IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF | ||
18 | MERCHANTABILITY, FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. | ||
19 | IN NO EVENT SHALL THE OPEN GROUP BE LIABLE FOR ANY CLAIM, DAMAGES OR | ||
20 | OTHER LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, | ||
21 | ARISING FROM, OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR | ||
22 | OTHER DEALINGS IN THE SOFTWARE. | ||
23 | |||
24 | Except as contained in this notice, the name of The Open Group shall | ||
25 | not be used in advertising or otherwise to promote the sale, use or | ||
26 | other dealings in this Software without prior written authorization | ||
27 | from The Open Group. | ||
28 | |||
29 | */ | ||
30 | |||
31 | /* | ||
32 | * Copyright © 2005 Daniel Stone | ||
33 | * | ||
34 | * Permission to use, copy, modify, distribute, and sell this software and its | ||
35 | * documentation for any purpose is hereby granted without fee, provided that | ||
36 | * the above copyright notice appear in all copies and that both that | ||
37 | * copyright notice and this permission notice appear in supporting | ||
38 | * documentation, and that the name of Daniel Stone not be used in advertising | ||
39 | * or publicity pertaining to distribution of the software without specific, | ||
40 | * written prior permission. Daniel Stone makes no representations about the | ||
41 | * suitability of this software for any purpose. It is provided "as is" | ||
42 | * without express or implied warranty. | ||
43 | * | ||
44 | * DANIEL STONE DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING | ||
45 | * ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL | ||
46 | * DANIEL STONE BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR | ||
47 | * ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER | ||
48 | * IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION, ARISING OUT OF | ||
49 | * OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS SOFTWARE. | ||
50 | */ | ||
51 | |||
52 | /* $XFree86: xc/include/Xpoll.h,v 3.8 2001/01/17 17:53:11 dawes Exp $ */ | ||
53 | |||
54 | #ifndef _XPOLL_H_ | ||
55 | #define _XPOLL_H_ | ||
56 | |||
57 | #ifndef WIN32 | ||
58 | |||
59 | #ifndef USE_POLL | ||
60 | |||
61 | #include <X11/Xos.h> | ||
62 | |||
63 | /* Below is the monster branch from hell. Basically, most systems will drop to | ||
64 | * 'the branch below is the fallthrough for halfway modern systems', and include | ||
65 | * <sys/select.h>, so we get the FD_* macros. */ | ||
66 | #if !defined(DGUX) | ||
67 | # if (defined(SVR4) || defined(CRAY) || defined(AIXV3)) && !defined(FD_SETSIZE) | ||
68 | # include <sys/select.h> | ||
69 | # ifdef luna | ||
70 | # include <sysent.h> | ||
71 | # endif | ||
72 | # else /* not SVR4/CRAY/AIXv3 */ | ||
73 | # if defined(AIXV4) /* AIX 4.2 fubar-ed <sys/select.h>, so try really hard. */ | ||
74 | # if !defined(NFDBITS) | ||
75 | # include <sys/select.h> | ||
76 | # endif | ||
77 | # else /* the branch below is the fallthrough for halfway modern systems */ | ||
78 | # ifdef __QNX__ /* Make sure we get 256 bit select masks */ | ||
79 | # define FD_SETSIZE 256 | ||
80 | # endif | ||
81 | # include <sys/select.h> | ||
82 | # endif | ||
83 | # endif | ||
84 | #else /* DGUX -- No sys/select in Intel DG/ux */ | ||
85 | # include <sys/time.h> | ||
86 | # include <sys/types.h> | ||
87 | # include <unistd.h> | ||
88 | #endif | ||
89 | |||
90 | #include <X11/Xmd.h> | ||
91 | |||
92 | #ifdef CSRG_BASED | ||
93 | #include <sys/param.h> | ||
94 | # if BSD < 199103 | ||
95 | typedef long fd_mask; | ||
96 | # endif | ||
97 | #endif | ||
98 | |||
99 | #define XFD_SETSIZE 256 | ||
100 | |||
101 | #ifndef FD_SETSIZE | ||
102 | #define FD_SETSIZE XFD_SETSIZE | ||
103 | #endif | ||
104 | |||
105 | #ifndef NBBY | ||
106 | #define NBBY 8 /* number of bits in a byte */ | ||
107 | #endif | ||
108 | |||
109 | #ifndef NFDBITS | ||
110 | #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */ | ||
111 | #endif | ||
112 | |||
113 | #ifndef howmany | ||
114 | #define howmany(x,y) (((x)+((y)-1))/(y)) | ||
115 | #endif | ||
116 | |||
117 | #if defined(BSD) && BSD < 198911 && !defined(luna) | ||
118 | typedef struct fd_set { | ||
119 | fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)]; | ||
120 | } fd_set; | ||
121 | #endif | ||
122 | |||
123 | #ifndef hpux /* and perhaps old BSD ??? */ | ||
124 | # define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t) | ||
125 | #else | ||
126 | # ifndef _XPG4_EXTENDED /* HPUX 9.x and earlier */ | ||
127 | # define Select(n,r,w,e,t) select(n,(int*)r,(int*)w,(int*)e,(struct timeval*)t) | ||
128 | # else | ||
129 | # define Select(n,r,w,e,t) select(n,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t) | ||
130 | # endif | ||
131 | #endif | ||
132 | |||
133 | #define __X_FDS_BITS __fds_bits | ||
134 | |||
135 | #ifndef __FDS_BITS | ||
136 | # define __FDS_BITS(p) ((p)->__X_FDS_BITS) | ||
137 | #endif | ||
138 | |||
139 | #define __XFDS_BITS(p, n) (__FDS_BITS(p))[n] | ||
140 | |||
141 | #ifndef FD_SET | ||
142 | #define FD_SET(n, p) (__XFDS_BITS(p, ((n)/NFDBITS)) |= ((fd_mask)1 << ((n) % NFDBITS))) | ||
143 | #endif | ||
144 | #ifndef FD_CLR | ||
145 | #define FD_CLR(n, p) (__XFDS_BITS((p), ((n)/NFDBITS)) &= ~((fd_mask)1 << ((n) % NFDBITS))) | ||
146 | #endif | ||
147 | #ifndef FD_ISSET | ||
148 | #define FD_ISSET(n, p) ((__XFDS_BITS((p), ((n)/NFDBITS))) & ((fd_mask)1 << ((n) % NFDBITS))) | ||
149 | #endif | ||
150 | #ifndef FD_ZERO | ||
151 | #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p))) | ||
152 | #endif | ||
153 | |||
154 | /* | ||
155 | * The howmany(FD_SETSIZE, NFDBITS) computes the number of elements in the | ||
156 | * array. before accessing an element in the array we check it exists. | ||
157 | * If it does not exist then the compiler discards the code to access it. | ||
158 | */ | ||
159 | #define XFD_ANYSET(p) \ | ||
160 | ((howmany(FD_SETSIZE, NFDBITS) > 0 && (__XFDS_BITS(p, 0))) || \ | ||
161 | (howmany(FD_SETSIZE, NFDBITS) > 1 && (__XFDS_BITS(p, 1))) || \ | ||
162 | (howmany(FD_SETSIZE, NFDBITS) > 2 && (__XFDS_BITS(p, 2))) || \ | ||
163 | (howmany(FD_SETSIZE, NFDBITS) > 3 && (__XFDS_BITS(p, 3))) || \ | ||
164 | (howmany(FD_SETSIZE, NFDBITS) > 4 && (__XFDS_BITS(p, 4))) || \ | ||
165 | (howmany(FD_SETSIZE, NFDBITS) > 5 && (__XFDS_BITS(p, 5))) || \ | ||
166 | (howmany(FD_SETSIZE, NFDBITS) > 6 && (__XFDS_BITS(p, 6))) || \ | ||
167 | (howmany(FD_SETSIZE, NFDBITS) > 7 && (__XFDS_BITS(p, 7)))) | ||
168 | |||
169 | #define XFD_COPYSET(src,dst) { \ | ||
170 | int __i__; \ | ||
171 | for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \ | ||
172 | __XFDS_BITS((dst), __i__) = __XFDS_BITS((src), __i__); \ | ||
173 | } | ||
174 | #define XFD_ANDSET(dst,b1,b2) { \ | ||
175 | int __i__; \ | ||
176 | for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \ | ||
177 | __XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) & (__XFDS_BITS((b2), __i__))); \ | ||
178 | } | ||
179 | #define XFD_ORSET(dst,b1,b2) { \ | ||
180 | int __i__; \ | ||
181 | for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \ | ||
182 | __XFDS_BITS((dst), __i__) = ((__XFDS_BITS((b1), __i__)) | (__XFDS_BITS((b2), __i__))); \ | ||
183 | } | ||
184 | #define XFD_UNSET(dst,b1) { \ | ||
185 | int __i__; \ | ||
186 | for (__i__ = 0; __i__ < howmany(FD_SETSIZE, NFDBITS); __i__++) \ | ||
187 | __XFDS_BITS((dst), __i__) &= ~(__XFDS_BITS((b1), __i__)); \ | ||
188 | } | ||
189 | |||
190 | #else /* USE_POLL */ | ||
191 | #include <sys/poll.h> | ||
192 | #endif /* USE_POLL */ | ||
193 | |||
194 | #else /* WIN32 */ | ||
195 | |||
196 | #define XFD_SETSIZE 256 | ||
197 | #ifndef FD_SETSIZE | ||
198 | #define FD_SETSIZE XFD_SETSIZE | ||
199 | #endif | ||
200 | #include <X11/Xwinsock.h> | ||
201 | |||
202 | #define Select(n,r,w,e,t) select(0,(fd_set*)r,(fd_set*)w,(fd_set*)e,(struct timeval*)t) | ||
203 | |||
204 | #define XFD_SETCOUNT(p) (((fd_set FAR *)(p))->fd_count) | ||
205 | #define XFD_FD(p,i) (((fd_set FAR *)(p))->fd_array[i]) | ||
206 | #define XFD_ANYSET(p) XFD_SETCOUNT(p) | ||
207 | |||
208 | #define XFD_COPYSET(src,dst) { \ | ||
209 | u_int __i; \ | ||
210 | FD_ZERO(dst); \ | ||
211 | for (__i = 0; __i < XFD_SETCOUNT(src) ; __i++) { \ | ||
212 | XFD_FD(dst,__i) = XFD_FD(src,__i); \ | ||
213 | } \ | ||
214 | XFD_SETCOUNT(dst) = XFD_SETCOUNT(src); \ | ||
215 | } | ||
216 | |||
217 | #define XFD_ANDSET(dst,b1,b2) { \ | ||
218 | u_int __i; \ | ||
219 | FD_ZERO(dst); \ | ||
220 | for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \ | ||
221 | if (FD_ISSET(XFD_FD(b1,__i), b2)) \ | ||
222 | FD_SET(XFD_FD(b1,__i), dst); \ | ||
223 | } \ | ||
224 | } | ||
225 | |||
226 | #define XFD_ORSET(dst,b1,b2) { \ | ||
227 | u_int __i; \ | ||
228 | if (dst != b1) XFD_COPYSET(b1,dst); \ | ||
229 | for (__i = 0; __i < XFD_SETCOUNT(b2) ; __i++) { \ | ||
230 | if (!FD_ISSET(XFD_FD(b2,__i), dst)) \ | ||
231 | FD_SET(XFD_FD(b2,__i), dst); \ | ||
232 | } \ | ||
233 | } | ||
234 | |||
235 | /* this one is really sub-optimal */ | ||
236 | #define XFD_UNSET(dst,b1) { \ | ||
237 | u_int __i; \ | ||
238 | for (__i = 0; __i < XFD_SETCOUNT(b1) ; __i++) { \ | ||
239 | FD_CLR(XFD_FD(b1,__i), dst); \ | ||
240 | } \ | ||
241 | } | ||
242 | |||
243 | /* we have to pay the price of having an array here, unlike with bitmasks | ||
244 | calling twice FD_SET with the same fd is not transparent, so be careful */ | ||
245 | #undef FD_SET | ||
246 | #define FD_SET(fd,set) do { \ | ||
247 | if (XFD_SETCOUNT(set) < FD_SETSIZE && !FD_ISSET(fd,set)) \ | ||
248 | XFD_FD(set,XFD_SETCOUNT(set)++)=(fd); \ | ||
249 | } while(0) | ||
250 | |||
251 | #define getdtablesize() FD_SETSIZE | ||
252 | |||
253 | #endif /* WIN32 */ | ||
254 | |||
255 | #endif /* _XPOLL_H_ */ | ||