diff options
author | Alon Zakai <alonzakai@gmail.com> | 2013-09-24 18:25:09 -0700 |
---|---|---|
committer | Alon Zakai <alonzakai@gmail.com> | 2013-09-24 18:25:09 -0700 |
commit | 05b6aa32a5f1633797f7eae390b3a8048b29ca69 (patch) | |
tree | 43543261bb5485b1c109e0e9f93dcb2f7bcd227d /system/include/libc/sys/select.h | |
parent | 6010666be99cd0322babba1174cfbc65c776deb5 (diff) | |
parent | 8e2d812b49f7de9487e1c816229106af0cf39d0d (diff) |
Merge branch 'incoming'
Diffstat (limited to 'system/include/libc/sys/select.h')
-rw-r--r-- | system/include/libc/sys/select.h | 42 |
1 files changed, 42 insertions, 0 deletions
diff --git a/system/include/libc/sys/select.h b/system/include/libc/sys/select.h new file mode 100644 index 00000000..e25257d2 --- /dev/null +++ b/system/include/libc/sys/select.h @@ -0,0 +1,42 @@ +#ifndef _SYS_SELECT_H +#define _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 |