#ifndef SYSROOT_SYS_SELECT_H_
#define SYSROOT_SYS_SELECT_H_

#ifdef __cplusplus
extern "C" {
#endif

#include <features.h>

#define __NEED_size_t
#define __NEED_time_t
#define __NEED_suseconds_t
#define __NEED_struct_timeval
#define __NEED_struct_timespec
#define __NEED_sigset_t

#include <bits/alltypes.h>

#define FD_SETSIZE 1024

typedef unsigned long fd_mask;

typedef struct {
  unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)];
} fd_set;

#define FD_ZERO(s)                                        \
  do {                                                    \
    int __i;                                              \
    unsigned long* __b = (s)->fds_bits;                   \
    for (__i = sizeof(fd_set) / sizeof(long); __i; __i--) \
      *__b++ = 0;                                         \
  } while (0)
#define FD_SET(d, s) \
  ((s)->fds_bits[(d) / (8 * sizeof(long))] |= (1UL << ((d) % (8 * sizeof(long)))))
#define FD_CLR(d, s) \
  ((s)->fds_bits[(d) / (8 * sizeof(long))] &= ~(1UL << ((d) % (8 * sizeof(long)))))
#define FD_ISSET(d, s) \
  !!((s)->fds_bits[(d) / (8 * sizeof(long))] & (1UL << ((d) % (8 * sizeof(long)))))

int select(int, fd_set* __restrict, fd_set* __restrict, fd_set* __restrict,
           struct timeval* __restrict);
int pselect(int, fd_set* __restrict, fd_set* __restrict, fd_set* __restrict,
            const struct timespec* __restrict, const sigset_t* __restrict);

#if defined(_GNU_SOURCE) || defined(_BSD_SOURCE)
#define NFDBITS (8 * (int)sizeof(long))
#endif

#ifdef __cplusplus
}
#endif

#endif  // SYSROOT_SYS_SELECT_H_
