select.h
01:
02:
03:
04:
05:
06:
07:
08:
09:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19: #ifndef _SYS_SELECT_H
20: # error "Never use <bits/select.h> directly; include <sys/select.h> instead."
21: #endif
22:
23: #include <bits/wordsize.h>
24:
25:
26: #if defined __GNUC__ && __GNUC__ >= 2
27:
28: # if __WORDSIZE == 64
29: # define __FD_ZERO_STOS "stosq"
30: # else
31: # define __FD_ZERO_STOS "stosl"
32: # endif
33:
34: # define __FD_ZERO(fdsp) \
35: do { \
36: int __d0, __d1; \
37: __asm__ __volatile__ ("cld; rep; " __FD_ZERO_STOS \
38: : "=c" (__d0), "=D" (__d1) \
39: : "a" (0), "0" (sizeof (fd_set) \
40: / sizeof (__fd_mask)), \
41: "1" (&__FDS_BITS (fdsp)[0]) \
42: : "memory"); \
43: } while (0)
44:
45: #else
46:
47:
48:
49: # define __FD_ZERO(set) \
50: do { \
51: unsigned int __i; \
52: fd_set *__arr = (set); \
53: for (__i = 0; __i < sizeof (fd_set) / sizeof (__fd_mask); ++__i) \
54: __FDS_BITS (__arr)[__i] = 0; \
55: } while (0)
56:
57: #endif
58:
59: #define __FD_SET(d, set) \
60: ((void) (__FDS_BITS (set)[__FD_ELT (d)] |= __FD_MASK (d)))
61: #define __FD_CLR(d, set) \
62: ((void) (__FDS_BITS (set)[__FD_ELT (d)] &= ~__FD_MASK (d)))
63: #define __FD_ISSET(d, set) \
64: ((__FDS_BITS (set)[__FD_ELT (d)] & __FD_MASK (d)) != 0)
65:
© Andrew Scott 2006 -
2025,
All Rights Reserved