[git commit] libc: split multi-source epoll.c

Bernhard Reutner-Fischer rep.dot.nop at gmail.com
Fri Sep 5 11:59:28 UTC 2014


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

We cannot override individual functions on a per-arch basis otherwise

Signed-off-by: Bernhard Reutner-Fischer <rep.dot.nop at gmail.com>
---
 libc/sysdeps/linux/common/Makefile.in    |    3 +-
 libc/sysdeps/linux/common/epoll.c        |   40 ++++++++++++++++-------------
 libc/sysdeps/linux/common/epoll_create.c |    8 ++++++
 libc/sysdeps/linux/common/epoll_ctl.c    |    8 ++++++
 libc/sysdeps/linux/common/epoll_pwait.c  |    8 ++++++
 libc/sysdeps/linux/common/epoll_wait.c   |    8 ++++++
 6 files changed, 56 insertions(+), 19 deletions(-)

diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
index 13dd77b..dc3a4b7 100644
--- a/libc/sysdeps/linux/common/Makefile.in
+++ b/libc/sysdeps/linux/common/Makefile.in
@@ -90,7 +90,8 @@ CSRC-$(UCLIBC_HAS_REALTIME) += clock_adjtime.c clock_getres.c clock_gettime.c cl
 CSRC-$(UCLIBC_HAS_ADVANCED_REALTIME) += posix_fadvise64.c posix_fadvise.c posix_madvise.c \
 	posix_fallocate.c posix_fallocate64.c
 CSRC-$(UCLIBC_SUSV4_LEGACY) += utime.c
-CSRC-$(UCLIBC_HAS_EPOLL) += epoll.c
+CSRC- += epoll.c # multi-source
+CSRC-$(UCLIBC_HAS_EPOLL) += epoll_create.c epoll_ctl.c epoll_wait.c epoll_pwait.c
 CSRC-$(UCLIBC_HAS_XATTR) += xattr.c
 CSRC-$(UCLIBC_HAS_PROFILING) += noophooks.c #pcprofile.c
 CSRC-$(UCLIBC_SV4_DEPRECATED) += ustat.c
diff --git a/libc/sysdeps/linux/common/epoll.c b/libc/sysdeps/linux/common/epoll.c
index 5f1e589..d7b7ca7 100644
--- a/libc/sysdeps/linux/common/epoll.c
+++ b/libc/sysdeps/linux/common/epoll.c
@@ -11,36 +11,28 @@
 #include <sys/epoll.h>
 #include <cancel.h>
 
-#ifdef __NR_epoll_create
+#ifdef L_epoll_create
+# ifdef __NR_epoll_create
 _syscall1(int, epoll_create, int, size)
-#endif
+# endif
 
-#ifdef __NR_epoll_create1
+# ifdef __NR_epoll_create1
 _syscall1(int, epoll_create1, int, flags)
-#endif
+# endif
 
-#if defined __NR_epoll_create1 && !defined __NR_epoll_create
+# if defined __NR_epoll_create1 && !defined __NR_epoll_create
 int epoll_create(int size)
 {
 	return INLINE_SYSCALL(epoll_create1, 1, 0);
 }
-
+# endif
 #endif
 
-#ifdef __NR_epoll_ctl
+#if defined L_epoll_ctl && defined __NR_epoll_ctl
 _syscall4(int, epoll_ctl, int, epfd, int, op, int, fd, struct epoll_event *, event)
 #endif
 
-#ifdef __NR_epoll_wait
-static int __NC(epoll_wait)(int epfd, struct epoll_event *events, int maxevents, int timeout)
-{
-	return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
-}
-CANCELLABLE_SYSCALL(int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
-		    (epfd, events, maxevents, timeout))
-#endif
-
-#ifdef __NR_epoll_pwait
+#if defined L_epoll_pwait && defined __NR_epoll_pwait
 # include <signal.h>
 
 # define __NR___syscall_epoll_pwait __NR_epoll_pwait
@@ -55,11 +47,23 @@ 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))
+#endif
+
+#if defined L_epoll_wait
+# if defined __NR_epoll_wait
+static int __NC(epoll_wait)(int epfd, struct epoll_event *events, int maxevents, int timeout)
+{
+	return INLINE_SYSCALL(epoll_wait, 4, epfd, events, maxevents, timeout);
+}
+CANCELLABLE_SYSCALL(int, epoll_wait, (int epfd, struct epoll_event *events, int maxevents, int timeout),
+		    (epfd, events, maxevents, timeout))
+
+
+# elif /* !defined L_epoll_wait && */ defined __NR_epoll_pwait
 /*
  * 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)
 {
diff --git a/libc/sysdeps/linux/common/epoll_create.c b/libc/sysdeps/linux/common/epoll_create.c
new file mode 100644
index 0000000..80896f6
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_create.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_epoll_create
+#include "epoll.c"
diff --git a/libc/sysdeps/linux/common/epoll_ctl.c b/libc/sysdeps/linux/common/epoll_ctl.c
new file mode 100644
index 0000000..53868cc
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_ctl.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_epoll_ctl
+#include "epoll.c"
diff --git a/libc/sysdeps/linux/common/epoll_pwait.c b/libc/sysdeps/linux/common/epoll_pwait.c
new file mode 100644
index 0000000..07461f9
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_pwait.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_epoll_pwait
+#include "epoll.c"
diff --git a/libc/sysdeps/linux/common/epoll_wait.c b/libc/sysdeps/linux/common/epoll_wait.c
new file mode 100644
index 0000000..6963447
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_wait.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen at uclibc.org>
+ *
+ * Licensed under the LGPL v2.1 or later, see the file COPYING.LIB in this tarball.
+ */
+
+#define L_epoll_wait
+#include "epoll.c"


More information about the uClibc-cvs mailing list