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