diff options
-rw-r--r-- | libc/sysdeps/linux/common/eventfd.c | 16 | ||||
-rw-r--r-- | libc/sysdeps/linux/common/stubs.c | 2 |
2 files changed, 15 insertions, 3 deletions
diff --git a/libc/sysdeps/linux/common/eventfd.c b/libc/sysdeps/linux/common/eventfd.c index cc3f3f0f7..96597ab33 100644 --- a/libc/sysdeps/linux/common/eventfd.c +++ b/libc/sysdeps/linux/common/eventfd.c @@ -7,12 +7,24 @@ * Licensed under the LGPL v2.1, see the file COPYING.LIB in this tarball. */ +#include <errno.h> #include <sys/syscall.h> #include <sys/eventfd.h> /* * eventfd() */ -#ifdef __NR_eventfd -_syscall2(int, eventfd, int, count, int, flags) +#if defined __NR_eventfd || defined __NR_eventfd2 +int eventfd (int count, int flags) +{ +#if defined __NR_eventfd2 + return INLINE_SYSCALL (eventfd2, 2, count, flags); +#elif defined __NR_eventfd + if (flags != 0) { + __set_errno (EINVAL); + return -1; + } + return INLINE_SYSCALL (eventfd, 1, count); +#endif +} #endif diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c index 3567b0786..1fc23933c 100644 --- a/libc/sysdeps/linux/common/stubs.c +++ b/libc/sysdeps/linux/common/stubs.c @@ -110,7 +110,7 @@ make_stub(epoll_pwait) make_stub(epoll_wait) #endif -#if !defined __NR_eventfd && defined __UCLIBC_LINUX_SPECIFIC__ +#if !defined __NR_eventfd && !defined __NR_eventfd2 && defined __UCLIBC_LINUX_SPECIFIC__ make_stub(eventfd) #endif |