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