fdset_doc.go 2.5 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293
  1. package goselect
  2. /**
  3. From: XCode's MacOSX10.10.sdk/System/Library/Frameworks/Kernel.framework/Versions/A/Headers/sys/select.h
  4. --
  5. // darwin/amd64 / 386
  6. sizeof(__int32_t) == 4
  7. --
  8. typedef __int32_t __fd_mask;
  9. #define FD_SETSIZE 1024
  10. #define __NFDBITS (sizeof(__fd_mask) * 8)
  11. #define __howmany(x, y) ((((x) % (y)) == 0) ? ((x) / (y)) : (((x) / (y)) + 1))
  12. typedef struct fd_set {
  13. __fd_mask fds_bits[__howmany(__FD_SETSIZE, __NFDBITS)];
  14. } fd_set;
  15. #define __FD_MASK(n) ((__fd_mask)1 << ((n) % __NFDBITS))
  16. #define FD_SET(n, p) ((p)->fds_bits[(n)/__NFDBITS] |= __FD_MASK(n))
  17. #define FD_CLR(n, p) ((p)->fds_bits[(n)/__NFDBITS] &= ~__FD_MASK(n))
  18. #define FD_ISSET(n, p) (((p)->fds_bits[(n)/__NFDBITS] & __FD_MASK(n)) != 0)
  19. */
  20. /**
  21. From: /usr/include/i386-linux-gnu/sys/select.h
  22. --
  23. // linux/i686
  24. sizeof(long int) == 4
  25. --
  26. typedef long int __fd_mask;
  27. #define FD_SETSIZE 1024
  28. #define __NFDBITS (sizeof(__fd_mask) * 8)
  29. typedef struct fd_set {
  30. __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
  31. } fd_set;
  32. #define __FD_MASK(n) ((__fd_mask)1 << ((n) % __NFDBITS))
  33. #define FD_SET(n, p) ((p)->fds_bits[(n)/__NFDBITS] |= __FD_MASK(n))
  34. #define FD_CLR(n, p) ((p)->fds_bits[(n)/__NFDBITS] &= ~__FD_MASK(n))
  35. #define FD_ISSET(n, p) (((p)->fds_bits[(n)/__NFDBITS] & __FD_MASK(n)) != 0)
  36. */
  37. /**
  38. From: /usr/include/x86_64-linux-gnu/sys/select.h
  39. --
  40. // linux/amd64
  41. sizeof(long int) == 8
  42. --
  43. typedef long int __fd_mask;
  44. #define FD_SETSIZE 1024
  45. #define __NFDBITS (sizeof(__fd_mask) * 8)
  46. typedef struct fd_set {
  47. __fd_mask fds_bits[__FD_SETSIZE / __NFDBITS];
  48. } fd_set;
  49. #define __FD_MASK(n) ((__fd_mask)1 << ((n) % __NFDBITS))
  50. #define FD_SET(n, p) ((p)->fds_bits[(n)/__NFDBITS] |= __FD_MASK(n))
  51. #define FD_CLR(n, p) ((p)->fds_bits[(n)/__NFDBITS] &= ~__FD_MASK(n))
  52. #define FD_ISSET(n, p) (((p)->fds_bits[(n)/__NFDBITS] & __FD_MASK(n)) != 0)
  53. */
  54. /**
  55. From: /usr/include/sys/select.h
  56. --
  57. // freebsd/amd64
  58. sizeof(unsigned long) == 8
  59. --
  60. typedef unsigned long __fd_mask;
  61. #define FD_SETSIZE 1024U
  62. #define __NFDBITS (sizeof(__fd_mask) * 8)
  63. #define _howmany(x, y) (((x) + ((y) - 1)) / (y))
  64. typedef struct fd_set {
  65. __fd_mask fds_bits[_howmany(FD_SETSIZE, __NFDBITS)];
  66. } fd_set;
  67. #define __FD_MASK(n) ((__fd_mask)1 << ((n) % __NFDBITS))
  68. #define FD_SET(n, p) ((p)->fds_bits[(n)/__NFDBITS] |= __FD_MASK(n))
  69. #define FD_CLR(n, p) ((p)->fds_bits[(n)/__NFDBITS] &= ~__FD_MASK(n))
  70. #define FD_ISSET(n, p) (((p)->fds_bits[(n)/__NFDBITS] & __FD_MASK(n)) != 0)
  71. */