summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common/eventfd.c
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common/eventfd.c')
-rw-r--r--libc/sysdeps/linux/common/eventfd.c16
1 files changed, 14 insertions, 2 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