summaryrefslogtreecommitdiff
path: root/libc/sysdeps/linux/common
diff options
context:
space:
mode:
Diffstat (limited to 'libc/sysdeps/linux/common')
-rw-r--r--libc/sysdeps/linux/common/Makefile.in3
-rw-r--r--libc/sysdeps/linux/common/epoll.c40
-rw-r--r--libc/sysdeps/linux/common/epoll_create.c8
-rw-r--r--libc/sysdeps/linux/common/epoll_ctl.c8
-rw-r--r--libc/sysdeps/linux/common/epoll_pwait.c8
-rw-r--r--libc/sysdeps/linux/common/epoll_wait.c8
6 files changed, 56 insertions, 19 deletions
diff --git a/libc/sysdeps/linux/common/Makefile.in b/libc/sysdeps/linux/common/Makefile.in
index 13dd77b33..dc3a4b7ff 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 5f1e589e9..d7b7ca7b3 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 000000000..80896f684
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_create.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@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 000000000..53868cc10
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_ctl.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@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 000000000..07461f974
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_pwait.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@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 000000000..6963447fb
--- /dev/null
+++ b/libc/sysdeps/linux/common/epoll_wait.c
@@ -0,0 +1,8 @@
+/*
+ * Copyright (C) 2000-2006 Erik Andersen <andersen@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"