1*9a747e4fSDavid du Colombier #ifndef __SELECT_H 2*9a747e4fSDavid du Colombier #define __SELECT_H 3*9a747e4fSDavid du Colombier #ifndef _BSD_EXTENSION 4*9a747e4fSDavid du Colombier This header file is an extension to ANSI/POSIX 5*9a747e4fSDavid du Colombier #endif 6*9a747e4fSDavid du Colombier #pragma lib "/$M/lib/ape/libap.a" 7*9a747e4fSDavid du Colombier 8*9a747e4fSDavid du Colombier #ifndef _FD_SET_T 9*9a747e4fSDavid du Colombier #define _FD_SET_T 10*9a747e4fSDavid du Colombier /* BSD select, and adjunct types and macros */ 11*9a747e4fSDavid du Colombier 12*9a747e4fSDavid du Colombier /* assume 96 fds is sufficient for fdset size */ 13*9a747e4fSDavid du Colombier 14*9a747e4fSDavid du Colombier typedef struct fd_set { 15*9a747e4fSDavid du Colombier long fds_bits[3]; 16*9a747e4fSDavid du Colombier } fd_set; 17*9a747e4fSDavid du Colombier 18*9a747e4fSDavid du Colombier #define FD_SET(n,p) ((p)->fds_bits[(n)>>5] |= (1 << ((n) &0x1f))) 19*9a747e4fSDavid du Colombier #define FD_CLR(n,p) ((p)->fds_bits[(n)>>5] &= ~(1 << ((n) &0x1f))) 20*9a747e4fSDavid du Colombier #define FD_ISSET(n,p) ((p)->fds_bits[(n)>>5] & (1 << ((n) &0x1f))) 21*9a747e4fSDavid du Colombier #define FD_ZERO(p) ((p)->fds_bits[0] =0, (p)->fds_bits[1] =0, (p)->fds_bits[2] =0) 22*9a747e4fSDavid du Colombier #endif 23*9a747e4fSDavid du Colombier 24*9a747e4fSDavid du Colombier #ifdef __cplusplus 25*9a747e4fSDavid du Colombier extern "C" { 26*9a747e4fSDavid du Colombier #endif 27*9a747e4fSDavid du Colombier 28*9a747e4fSDavid du Colombier extern int select(int, fd_set*, fd_set*, fd_set*, struct timeval *); 29*9a747e4fSDavid du Colombier 30*9a747e4fSDavid du Colombier #ifdef __cplusplus 31*9a747e4fSDavid du Colombier } 32*9a747e4fSDavid du Colombier #endif 33*9a747e4fSDavid du Colombier 34*9a747e4fSDavid du Colombier #endif 35