154359Sroberto/*
254359Sroberto * Not all machines define FD_SET in sys/types.h
354359Sroberto */
4285612Sdelphij#ifndef NTP_SELECT_H
5285612Sdelphij#define NTP_SELECT_H	/* note: tested by include/l_stdlib.h */
654359Sroberto
754359Sroberto/* Was: (defined(RS6000)||defined(SYS_PTX))&&!defined(_BSD) */
854359Sroberto/* Could say: !defined(FD_SET) && defined(HAVE_SYS_SELECT_H) */
9285612Sdelphij/* except FD_SET can legitimately be a typedef... */
1054359Sroberto#if defined(HAVE_SYS_SELECT_H) && !defined(_BSD)
11285612Sdelphij# ifndef SYS_VXWORKS
12285612Sdelphij#  include <sys/select.h>
13285612Sdelphij# else
14285612Sdelphij#  include <sockLib.h>
15285612Sdelphijextern	int	select(int width, fd_set *pReadFds, fd_set *pWriteFds,
16285612Sdelphij		       fd_set *pExceptFds, struct timeval *pTimeOut);
17285612Sdelphij# endif
1854359Sroberto#endif
1954359Sroberto
20285612Sdelphij#if !defined(FD_SET)
21285612Sdelphij# define NFDBITS	32
22285612Sdelphij# define FD_SETSIZE	32
23285612Sdelphij# define FD_SET(n, p)	((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
24285612Sdelphij# define FD_CLR(n, p)	((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
25285612Sdelphij# define FD_ISSET(n, p)	((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
26285612Sdelphij# define FD_ZERO(p)	memset((p), 0, sizeof(*(p)))
2754359Sroberto#endif
2854359Sroberto
2954359Sroberto#if defined(VMS)
3054359Srobertotypedef struct {
31285612Sdelphij	unsigned int fds_bits[1];
3254359Sroberto} fd_set;
3354359Sroberto#endif
3454359Sroberto
35285612Sdelphij#endif	/* NTP_SELECT_H */
36