xref: /plan9/sys/include/ape/select.h (revision 219b2ee8daee37f4aad58d63f21287faa8e4ffdc)
13e12c5d1SDavid du Colombier #ifndef __SELECT_H
23e12c5d1SDavid du Colombier #define __SELECT_H
3*219b2ee8SDavid du Colombier #ifndef _BSD_EXTENSION
43e12c5d1SDavid du Colombier     This header file is an extension to ANSI/POSIX
53e12c5d1SDavid du Colombier #endif
63e12c5d1SDavid du Colombier #pragma lib "/$M/lib/ape/libap.a"
73e12c5d1SDavid du Colombier 
8*219b2ee8SDavid du Colombier #ifndef _FD_SET_T
9*219b2ee8SDavid du Colombier #define _FD_SET_T
103e12c5d1SDavid du Colombier /* BSD select, and adjunct types and macros */
113e12c5d1SDavid du Colombier 
123e12c5d1SDavid du Colombier /* assume 96 fds is sufficient for fdset size */
133e12c5d1SDavid du Colombier 
143e12c5d1SDavid du Colombier typedef struct fd_set {
153e12c5d1SDavid du Colombier 	long fds_bits[3];
163e12c5d1SDavid du Colombier } fd_set;
173e12c5d1SDavid du Colombier 
183e12c5d1SDavid du Colombier #define FD_SET(n,p)	((p)->fds_bits[(n)>>5] |= (1 << ((n) &0x1f)))
193e12c5d1SDavid du Colombier #define FD_CLR(n,p)	((p)->fds_bits[(n)>>5] &= ~(1 << ((n) &0x1f)))
203e12c5d1SDavid du Colombier #define FD_ISSET(n,p)	((p)->fds_bits[(n)>>5] & (1 << ((n) &0x1f)))
213e12c5d1SDavid du Colombier #define FD_ZERO(p)	((p)->fds_bits[0] =0, (p)->fds_bits[1] =0, (p)->fds_bits[2] =0)
22*219b2ee8SDavid du Colombier #endif
233e12c5d1SDavid du Colombier 
243e12c5d1SDavid du Colombier #ifdef __cplusplus
253e12c5d1SDavid du Colombier extern "C" {
263e12c5d1SDavid du Colombier #endif
273e12c5d1SDavid du Colombier 
283e12c5d1SDavid du Colombier extern int select(int, fd_set*, fd_set*, fd_set*, struct timeval *);
293e12c5d1SDavid du Colombier 
303e12c5d1SDavid du Colombier #ifdef __cplusplus
313e12c5d1SDavid du Colombier }
323e12c5d1SDavid du Colombier #endif
333e12c5d1SDavid du Colombier 
343e12c5d1SDavid du Colombier #endif
35