[git commit] epoll: Use epoll_pwait if arch does not have the epoll_wait syscall

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Wed Feb 20 12:45:11 UTC 2013


commit: http://git.uclibc.org/uClibc/commit/?id=3db05793b7b35238060f2310176f11b7df3844db
branch: http://git.uclibc.org/uClibc/commit/?id=refs/heads/master

Signed-off-by: Markos Chandras <markos.chandras at imgtec.com>

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/sysdeps/linux/common/epoll.c |   11 +++++++++++
 libc/sysdeps/linux/common/stubs.c |    3 ++-
 2 files changed, 13 insertions(+), 1 deletions(-)

diff --git a/libc/sysdeps/linux/common/epoll.c b/libc/sysdeps/linux/common/epoll.c
index b736626..5f1e589 100644
--- a/libc/sysdeps/linux/common/epoll.c
+++ b/libc/sysdeps/linux/common/epoll.c
@@ -55,4 +55,15 @@ static int __NC(epoll_pwait)(int epfd, struct epoll_event *events, int maxevents
 CANCELLABLE_SYSCALL(int, epoll_pwait, (int epfd, struct epoll_event *events, int maxevents, int timeout,
 				       const sigset_t *set),
 		    (epfd, events, maxevents, timeout, set))
+/*
+ * If epoll_wait is not defined, then call epoll_pwait instead using NULL
+ * for sigmask argument
+ */
+# ifndef __NR_epoll_wait
+#  include <stddef.h>
+int epoll_wait(int epfd, struct epoll_event *events, int maxevents, int timeout)
+{
+	return INLINE_SYSCALL(epoll_pwait, 5, epfd, events, maxevents, timeout, NULL);
+}
+# endif
 #endif
diff --git a/libc/sysdeps/linux/common/stubs.c b/libc/sysdeps/linux/common/stubs.c
index 0f000f0..dfbbd42 100644
--- a/libc/sysdeps/linux/common/stubs.c
+++ b/libc/sysdeps/linux/common/stubs.c
@@ -107,7 +107,8 @@ make_stub(epoll_ctl)
 make_stub(epoll_pwait)
 #endif
 
-#if !defined __NR_epoll_wait && defined __UCLIBC_HAS_EPOLL__
+#if !defined __NR_epoll_wait && defined __UCLIBC_HAS_EPOLL__ \
+		&& !defined __NR_epoll_pwait
 make_stub(epoll_wait)
 #endif
 


More information about the uClibc-cvs mailing list