home *** CD-ROM | disk | FTP | other *** search
/ The Datafile PD-CD 4 / DATAFILE_PDCD4.iso / languages / netlib / !NetLib / sys / h / select < prev    next >
Encoding:
Text File  |  1995-05-23  |  1.1 KB  |  46 lines

  1. #ifndef __sys_select_h
  2. #define __sys_select_h
  3.  
  4. /* Freenet programmers interface - sys/select.h - 23/5/95 */
  5.  
  6. #include "Internet:sys.h.time"
  7.  
  8. /*
  9.  * Size of a file descriptor set (must be greater than the
  10.  * maximum number of file descriptors available)
  11.  */
  12. #define FD_SETSIZE 256
  13.  
  14. /*
  15.  * Macros for manipulating bitmasks
  16.  */
  17. typedef long          fd_mask;
  18. #define NFDBITS       (sizeof(fd_mask) * 8)
  19. #define howmany(x, y) (((x)+((y)-1))/(y))
  20.  
  21. /*
  22.  * A file descriptor set
  23.  */
  24. typedef struct fd_set {
  25.   fd_mask fds_bits[howmany(FD_SETSIZE, NFDBITS)];
  26. } fd_set;
  27.  
  28. /*
  29.  * Macros used by users to manipulate descriptor sets
  30.  */
  31. #define FD_SET(n, p)   \
  32.   ((p)->fds_bits[(n)/NFDBITS] |= (1UL << (long)((n) % (long)NFDBITS)))
  33. #define FD_CLR(n, p)   \
  34.   ((p)->fds_bits[(n)/NFDBITS] &= ~(long)(1UL << ((n) % (long)NFDBITS)))
  35. #define FD_ISSET(n, p) \
  36.   ((p)->fds_bits[(n)/NFDBITS] & (long)(1UL << ((n) % (long)NFDBITS)))
  37. #define FD_ZERO(p)     (void)memset(p, 0, sizeof(*(p)))
  38.  
  39. /*
  40.  * The select() routine
  41.  */
  42. extern int select(int /*nfds*/, fd_set */*readfds*/, fd_set */*writefds*/,
  43.                   fd_set */*exceptfds*/, struct timeval */*timeout*/);
  44.  
  45. #endif
  46.