-#define FD_SETSIZE 1024
-#endif
-
-#define __DARWIN_NBBY 8 /* bits in a byte */
-#define __DARWIN_NFDBITS (sizeof(__int32_t) * __DARWIN_NBBY) /* bits per mask */
-#define __DARWIN_howmany(x, y) (((x) + ((y) - 1)) / (y)) /* # y's == x bits? */
-
-__BEGIN_DECLS
-typedef struct fd_set {
- __int32_t fds_bits[__DARWIN_howmany(FD_SETSIZE, __DARWIN_NFDBITS)];
-} fd_set;
-__END_DECLS
-
-#define FD_SET(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] |= (1<<((n) % __DARWIN_NFDBITS)))
-#define FD_CLR(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] &= ~(1<<((n) % __DARWIN_NFDBITS)))
-#define FD_ISSET(n, p) ((p)->fds_bits[(n)/__DARWIN_NFDBITS] & (1<<((n) % __DARWIN_NFDBITS)))
-#if __GNUC__ > 3 || __GNUC__ == 3 && __GNUC_MINOR__ >= 3
-/*
- * Use the built-in bzero function instead of the library version so that
- * we do not pollute the namespace or introduce prototype warnings.
- */
-#define FD_ZERO(p) __builtin_bzero(p, sizeof(*(p)))
-#else
-#define FD_ZERO(p) bzero(p, sizeof(*(p)))
-#endif
-#ifndef _POSIX_C_SOURCE
-#define FD_COPY(f, t) bcopy(f, t, sizeof(*(f)))
-#endif /* !_POSIX_C_SOURCE */
-
-#endif /* !_FD_SET */
-
-
-#ifndef _POSIX_C_SOURCE
-/*
- * Structure defined by POSIX.4 to be like a timeval.
- */
-#ifndef _TIMESPEC
-#define _TIMESPEC
-struct timespec {
- time_t tv_sec; /* seconds */
- long tv_nsec; /* and nanoseconds */
-};
-
-#ifdef KERNEL
-// LP64todo - should this move?
-#include <machine/types.h> /* user_time_t */
-
-/* LP64 version of struct timeval. time_t is a long and must grow when
- * we're dealing with a 64-bit process.
- * WARNING - keep in sync with struct timeval
- */
-#if __DARWIN_ALIGN_NATURAL
-#pragma options align=natural
-#endif
-
-struct user_timeval {
- user_time_t tv_sec; /* seconds */
- suseconds_t tv_usec; /* and microseconds */
-};
-
-struct user_itimerval {
- struct user_timeval it_interval; /* timer interval */
- struct user_timeval it_value; /* current value */
-};
-
-/* LP64 version of struct timespec. time_t is a long and must grow when
- * we're dealing with a 64-bit process.
- * WARNING - keep in sync with struct timespec
- */
-struct user_timespec {
- user_time_t tv_sec; /* seconds */
- int32_t tv_nsec; /* and nanoseconds */
-};
-
-#if __DARWIN_ALIGN_NATURAL
-#pragma options align=reset
-#endif
-
-#endif // KERNEL
-#endif
+#define FD_SETSIZE __DARWIN_FD_SETSIZE
+#endif /* FD_SETSIZE */
+#ifndef FD_SET
+#define FD_SET(n, p) __DARWIN_FD_SET(n, p)
+#endif /* FD_SET */
+#ifndef FD_CLR
+#define FD_CLR(n,p) __DARWIN_FD_CLR(n, p)
+#endif /* FD_CLR */
+#ifndef FD_ISSET
+#define FD_ISSET(n, p) __DARWIN_FD_ISSET(n, p)
+#endif /* FD_ISSET */
+#ifndef FD_ZERO
+#define FD_ZERO(p) __DARWIN_FD_ZERO(p)
+#endif /* FD_ZERO */
+
+#if !defined(_POSIX_C_SOURCE) || defined(_DARWIN_C_SOURCE)
+
+#ifndef FD_COPY
+#define FD_COPY(f, t) __DARWIN_FD_COPY(f, t)
+#endif /* FD_COPY */