1/* $NetBSD: ntp_select.h,v 1.5 2020/05/25 20:47:20 christos Exp $ */ 2 3/* 4 * Not all machines define FD_SET in sys/types.h 5 */ 6#ifndef NTP_SELECT_H 7#define NTP_SELECT_H /* note: tested by include/l_stdlib.h */ 8 9/* Was: (defined(RS6000)||defined(SYS_PTX))&&!defined(_BSD) */ 10/* Could say: !defined(FD_SET) && defined(HAVE_SYS_SELECT_H) */ 11/* except FD_SET can legitimately be a typedef... */ 12#if defined(HAVE_SYS_SELECT_H) && !defined(_BSD) 13# ifndef SYS_VXWORKS 14# include <sys/select.h> 15# else 16# include <sockLib.h> 17extern int select(int width, fd_set *pReadFds, fd_set *pWriteFds, 18 fd_set *pExceptFds, struct timeval *pTimeOut); 19# endif 20#endif 21 22#if !defined(FD_SET) 23# define NFDBITS 32 24# define FD_SETSIZE 32 25# define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS))) 26# define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS))) 27# define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS))) 28# define FD_ZERO(p) memset((p), 0, sizeof(*(p))) 29#endif 30 31#if defined(VMS) 32typedef struct { 33 unsigned int fds_bits[1]; 34} fd_set; 35#endif 36 37#endif /* NTP_SELECT_H */ 38