diff options
-rw-r--r-- | include/poll.h | 10 | ||||
-rw-r--r-- | src/linux/ppoll.c | 9 |
2 files changed, 19 insertions, 0 deletions
diff --git a/include/poll.h b/include/poll.h index 36ef7fee..ace3f3aa 100644 --- a/include/poll.h +++ b/include/poll.h @@ -5,6 +5,8 @@ extern "C" { #endif +#incluce <features.h> + #define POLLIN 0x001 #define POLLPRI 0x002 #define POLLOUT 0x004 @@ -28,6 +30,14 @@ struct pollfd int poll (struct pollfd *, nfds_t, int); +#ifdef _GNU_SOURCE +#define __NEED_time_t +#define __NEED_struct_timespec +#define __NEED_sigset_t +#include <bits/alltypes.h> +int ppoll(struct pollfd *, nfds_t, const struct timespec *, const sigset_t *); +#endif + #ifdef __cplusplus } #endif diff --git a/src/linux/ppoll.c b/src/linux/ppoll.c new file mode 100644 index 00000000..8f4aab9b --- /dev/null +++ b/src/linux/ppoll.c @@ -0,0 +1,9 @@ +#define _GNU_SOURCE +#include <poll.h> +#include "syscall.h" + +int ppoll(struct pollfd *fds, nfds_t n, const struct timespec *to, const sigset_t *mask) +{ + struct timespec tmp = *to; + return syscall_cp(SYS_ppoll, fds, n, &tmp, mask); +} |