home *** CD-ROM | disk | FTP | other *** search
/ rtsi.com / 2014.01.www.rtsi.com.tar / www.rtsi.com / OS9 / OSK / NETWORK / ISP / bind.4.8.3.lzh / BIND483 / RES / ntypes.h < prev    next >
Text File  |  1994-02-01  |  1KB  |  31 lines

  1. /*
  2.  * Select uses bit masks of file descriptors in longs.
  3.  * These macros manipulate such bit fields (the filesystem macros use chars).
  4.  * FD_SETSIZE may be defined by the user, but the default here
  5.  * should be >= NOFILE (param.h).
  6.  */
  7. #define MAX_NOFILE 32
  8. #define NBBY 8
  9. #ifndef    FD_SETSIZE
  10. #define    FD_SETSIZE    MAX_NOFILE
  11. #endif    /* FD_SETSIZE */
  12.  
  13. /* How many things we'll allow select to use. 0 if unlimited */
  14. #define MAXSELFD    MAX_NOFILE
  15. typedef long    fd_mask;
  16. #define NFDBITS    (sizeof(fd_mask) * NBBY)    /* bits per mask (power of 2!)*/
  17. #define NFDSHIFT 5                /* Shift based on above */
  18. #ifndef howmany
  19. #define    howmany(x, y)    (((x)+((y)-1))/(y))
  20. #endif /* howmany */
  21.  
  22. typedef    struct fd_set {
  23.     fd_mask    fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  24. } fd_set;
  25.  
  26. #define    FD_SET(n, p)    ((p)->fds_bits[(n)/NFDBITS] |= (1 << ((n) % NFDBITS)))
  27. #define    FD_CLR(n, p)    ((p)->fds_bits[(n)/NFDBITS] &= ~(1 << ((n) % NFDBITS)))
  28. #define    FD_ISSET(n, p)    ((p)->fds_bits[(n)/NFDBITS] & (1 << ((n) % NFDBITS)))
  29. #define FD_ZERO(p)    bzero((char *)(p), sizeof(*(p)))
  30.  
  31.