]>
Commit | Line | Data |
---|---|---|
320054e8 DG |
1 | #ifndef _SYS_SELECT_H |
2 | #define _SYS_SELECT_H | |
3 | #ifdef __cplusplus | |
4 | extern "C" { | |
5 | #endif | |
6 | ||
7 | #include <features.h> | |
8 | ||
9 | #define __NEED_size_t | |
10 | #define __NEED_time_t | |
11 | #define __NEED_suseconds_t | |
12 | #define __NEED_struct_timeval | |
13 | #define __NEED_struct_timespec | |
14 | #define __NEED_sigset_t | |
15 | ||
16 | #include <bits/alltypes.h> | |
17 | ||
18 | #define FD_SETSIZE 1024 | |
19 | ||
e5f14be3 | 20 | #ifdef __wasilibc_unmodified_upstream /* Use alternate WASI libc headers */ |
320054e8 DG |
21 | typedef unsigned long fd_mask; |
22 | #endif | |
23 | ||
e5f14be3 | 24 | #ifdef __wasilibc_unmodified_upstream /* Use alternate WASI libc headers */ |
320054e8 DG |
25 | typedef struct { |
26 | unsigned long fds_bits[FD_SETSIZE / 8 / sizeof(long)]; | |
27 | } fd_set; | |
28 | ||
29 | #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) | |
30 | #define FD_SET(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] |= (1UL<<((d)%(8*sizeof(long))))) | |
31 | #define FD_CLR(d, s) ((s)->fds_bits[(d)/(8*sizeof(long))] &= ~(1UL<<((d)%(8*sizeof(long))))) | |
32 | #define FD_ISSET(d, s) !!((s)->fds_bits[(d)/(8*sizeof(long))] & (1UL<<((d)%(8*sizeof(long))))) | |
33 | #else | |
34 | #include <__fd_set.h> | |
35 | #endif | |
36 | ||
37 | int select (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, struct timeval *__restrict); | |
38 | int pselect (int, fd_set *__restrict, fd_set *__restrict, fd_set *__restrict, const struct timespec *__restrict, const sigset_t *__restrict); | |
39 | ||
e5f14be3 | 40 | #ifdef __wasilibc_unmodified_upstream /* Use alternate WASI libc headers */ |
320054e8 DG |
41 | #if defined(_GNU_SOURCE) || defined(_BSD_SOURCE) |
42 | #define NFDBITS (8*(int)sizeof(long)) | |
43 | #endif | |
44 | #endif | |
45 | ||
46 | #ifdef __cplusplus | |
47 | } | |
48 | #endif | |
49 | #endif |