2 * Select uses bit masks of file descriptors in longs. These macros
3 * manipulate such bit fields.
5 * FD_SETSIZE is the number file descriptors select() is able to
6 * deal with. For DEC TCP/IP on VMS this is currently 32.
9 #define NBBY 8 /* number of bits in a byte */
12 #define NFDBITS (sizeof(fd_mask) * NBBY) /* bits per mask */
15 #define howmany(x, y) (((x)+((y)-1))/(y))
18 typedef struct fd_set {
19 fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
22 #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
23 #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
24 #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
25 #define FD_ZERO(p) memset((char *)(p), 0, sizeof(*(p)))
27 #define getdtablesize() FD_SETSIZE