055f1c02d3
Upstream has a large number of patches lined up for the next 0.9.33.x bugfix release; http://git.uclibc.org/uClibc/log/?h=0.9.33 Add them here, as atleast some of them are quite critical (E.G. the eventfd issue gets triggered by recent glib versions). I've skipped the microblaze and xtensa fixes as we don't currently support those with 0.9.33.2. Drop uclibc-0002-Add-definition-of-MSG_WAITFORONE-and-MSG_CMSG_CMSG_CLOEXE.patch as that is a subset of uclibc-0035-socket.h-pull-socket_type.h-from-eglibc.patch Signed-off-by: Peter Korsgaard <jacmet@sunsite.dk>
65 lines
1.9 KiB
Diff
65 lines
1.9 KiB
Diff
From 7810e4f8027b5c4c8ceec6fefec4eb779362ebb5 Mon Sep 17 00:00:00 2001
|
|
From: Khem Raj <raj.khem@gmail.com>
|
|
Date: Sun, 10 Jun 2012 09:36:23 -0700
|
|
Subject: [PATCH] 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>
|
|
---
|
|
libc/sysdeps/linux/common/eventfd.c | 16 ++++++++++++++--
|
|
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 cc3f3f0..96597ab 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 4d1e26c..7af14c1 100644
|
|
--- a/libc/sysdeps/linux/common/stubs.c
|
|
+++ b/libc/sysdeps/linux/common/stubs.c
|
|
@@ -93,7 +93,7 @@ make_stub(epoll_ctl)
|
|
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
|
|
|
|
--
|
|
1.7.10.4
|
|
|