home *** CD-ROM | disk | FTP | other *** search
- /*
- * $XConsortium: fd.h,v 1.14 89/10/05 13:32:53 swick Exp $
- * $oHeader: fd.h,v 1.4 88/08/26 14:49:54 asente Exp $
- */
-
- /***********************************************************
- Copyright 1987, 1988 by Digital Equipment Corporation, Maynard, Massachusetts,
- and the Massachusetts Institute of Technology, Cambridge, Massachusetts.
-
- All Rights Reserved
-
- Permission to use, copy, modify, and distribute this software and its
- documentation for any purpose and without fee is hereby granted,
- provided that the above copyright notice appear in all copies and that
- both that copyright notice and this permission notice appear in
- supporting documentation, and that the names of Digital or MIT not be
- used in advertising or publicity pertaining to distribution of the
- software without specific, written prior permission.
-
- DIGITAL DISCLAIMS ALL WARRANTIES WITH REGARD TO THIS SOFTWARE, INCLUDING
- ALL IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS, IN NO EVENT SHALL
- DIGITAL BE LIABLE FOR ANY SPECIAL, INDIRECT OR CONSEQUENTIAL DAMAGES OR
- ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS,
- WHETHER IN AN ACTION OF CONTRACT, NEGLIGENCE OR OTHER TORTIOUS ACTION,
- ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE OF THIS
- SOFTWARE.
-
- ******************************************************************/
-
- #ifndef _Xt_fd_set
- #define _Xt_fd_set
-
- #if defined(CRAY) && !defined(FD_SETSIZE)
- #include <sys/select.h> /* defines FD stuff except howmany() */
- #endif
-
- #ifndef NBBY
- #define NBBY 8 /* number of bits in a byte */
- #endif
- /*
- * Select uses bit masks of file descriptors in longs.
- * These macros manipulate such bit fields (the filesystem macros use chars).
- * FD_SETSIZE may be defined by the user, but the default here
- * should be >= NOFILE (param.h).
- */
- #ifndef FD_SETSIZE
- #define FD_SETSIZE 256
- #endif
-
- typedef long Fd_mask;
- #ifndef NFDBITS
- #define NFDBITS (sizeof(Fd_mask) * NBBY) /* bits per mask */
- #endif
- #ifndef howmany
- #define howmany(x, y) (((x)+((y)-1))/(y))
- #endif
-
- typedef struct Fd_set {
- Fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
- } Fd_set;
-
- #ifndef FD_SET
- #define FD_SET(n, p) ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
- #endif
- #ifndef FD_CLR
- #define FD_CLR(n, p) ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
- #endif
- #ifndef FD_ISSET
- #define FD_ISSET(n, p) ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
- #endif
- #ifndef FD_ZERO
- #define FD_ZERO(p) bzero((char *)(p), sizeof(*(p)))
- #endif
-
- #endif /*_Xt_fd_set*/
-