diff options
author | Khem Raj <raj.khem@gmail.com> | 2012-06-10 09:36:23 -0700 |
---|---|---|
committer | Khem Raj <raj.khem@gmail.com> | 2012-06-10 09:36:23 -0700 |
commit | e118373cbb58ba5ffa5fb6670957678d5b87cdb9 (patch) | |
tree | 968f30ebbb43633fdf74dc1baa3d8b02e9b41872 /libc/sysdeps/linux/common/eventfd.c | |
parent | 2952c70804b48bb5c87eea21df5e401969dc4ec1 (diff) |
eventfd: Implement eventfd2 and fix eventfd
eventfd: evntfd assumes to take two arguments instead it
should be one evntfd expects two therefore implement both syscalls with
correct parameters
Thanks Eugene Rudoy for reporting it and also providing the patch
Signed-off-by: Khem Raj <raj.khem@gmail.com>
Diffstat (limited to 'libc/sysdeps/linux/common/eventfd.c')
-rw-r--r-- | libc/sysdeps/linux/common/eventfd.c | 16 |
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 |