Coherent4.2.10/include/sys/select.h

/* (-lgl
 *	Coherent 386 release 4.2
 *	Copyright (c) 1982, 1993 by Mark Williams Company.
 *	All rights reserved. May not be copied without permission.
 *	For copying permission and licensing info, write licensing@mwc.com
 -lgl) */

#ifndef __SYS_SELECT_H__
#define __SYS_SELECT_H__

/*
 * Definitions suitable for an emulation of the BSD select () call via
 * poll ().  Note that the definitions in this header are not part of iBCS2
 * or the SVR4 ABI, so that while they match documented practice the exact
 * contents may differ from other implementations.
 */

#include <common/ccompat.h>
#include <common/__types.h>
#include <common/_limits.h>
#include <common/_tricks.h>
#include <common/_timestr.h>

/*
 * We #include <string.h> because FD_ZERO () requires access to memset ().
 */

#include <string.h>


/*
 * Note that the value of FD_SETSIZE is allowed to be set by applications as a
 * matter of historical practice; the default given here is merely a default
 * (albeit sufficiently large for most purposes). This practical maximum is
 * hard-wired into select ().
 */

#ifndef	FD_SETSIZE
# define	FD_SETSIZE	256
#endif

typedef struct __fd_set {
	__ulong_t	_fd_set [__DIVIDE_ROUNDUP_CONST (FD_SETSIZE,
				  __CHAR_BIT * sizeof (__ulong_t))];
} fd_set;

#define	__FD_MASK(b)		(1 << ((b) & (__LONG_BIT - 1)))

#define	FD_ZERO(fdp)		memset (fdp, 0, sizeof (* (fdp)))
#define FD_SET(b, fdp)		((fdp)->_fd_set [(b) / __LONG_BIT] |= \
				 __FD_MASK (b))
#define	FD_CLR(b, fdp)		((fdp)->_fd_set [(b) / __LONG_BIT] &= \
				 ~ __FD_MASK (b))
#define FD_ISSET(b,fdp)		(((fdp)->_fd_set [(b) / __LONG_BIT] & \
				  __FD_MASK (b)) != 0)

__EXTERN_C_BEGIN__

int		select		__PROTO ((int _nfds, fd_set * _readmask,
					  fd_set * _writemask,
					  fd_set * _exceptmask,
					  __timestruc_t * _timeout));

__EXTERN_C_END__

#endif	/* ! defined (__SYS_SELECT_H__) */