aboutsummaryrefslogtreecommitdiff
path: root/sysdeps/unix/sysv/linux/poll.c
diff options
context:
space:
mode:
Diffstat (limited to 'sysdeps/unix/sysv/linux/poll.c')
-rw-r--r--sysdeps/unix/sysv/linux/poll.c61
1 files changed, 2 insertions, 59 deletions
diff --git a/sysdeps/unix/sysv/linux/poll.c b/sysdeps/unix/sysv/linux/poll.c
index c8f5e6deb1..0abdad0399 100644
--- a/sysdeps/unix/sysv/linux/poll.c
+++ b/sysdeps/unix/sysv/linux/poll.c
@@ -1,6 +1,5 @@
-/* Poll system call, with emulation if it is not available.
- Copyright (C) 1997,1998,1999,2000,2001,2002,2006
- Free Software Foundation, Inc.
+/* Poll system call.
+ Copyright (C) 1997-2012 Free Software Foundation, Inc.
This file is part of the GNU C Library.
The GNU C Library is free software; you can redistribute it and/or
@@ -26,58 +25,12 @@
#include <kernel-features.h>
-#if defined __NR_poll || __ASSUME_POLL_SYSCALL > 0
-
-# if __ASSUME_POLL_SYSCALL == 0
-static int __emulate_poll (struct pollfd *fds, nfds_t nfds,
- int timeout) internal_function;
-# endif
-
-
-# if __ASSUME_POLL_SYSCALL == 0
-/* For loser kernels. */
-static int
-loser_poll (struct pollfd *fds, nfds_t nfds, int timeout)
-{
- static int must_emulate;
-
- if (!must_emulate)
- {
- int errno_saved = errno;
- int retval = INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds,
- timeout);
-
- if (retval >= 0 || errno != ENOSYS)
- return retval;
-
- __set_errno (errno_saved);
- must_emulate = 1;
- }
-
- return __emulate_poll (fds, nfds, timeout);
-}
-# endif
-
-
-/* The real implementation. */
int
__poll (fds, nfds, timeout)
struct pollfd *fds;
nfds_t nfds;
int timeout;
{
-# if __ASSUME_POLL_SYSCALL == 0
- if (SINGLE_THREAD_P)
- return loser_poll (CHECK_N (fds, nfds), nfds, timeout);
-
- int oldtype = LIBC_CANCEL_ASYNC ();
-
- int result = loser_poll (CHECK_N (fds, nfds), nfds, timeout);
-
- LIBC_CANCEL_RESET (oldtype);
-
- return result;
-# else
if (SINGLE_THREAD_P)
return INLINE_SYSCALL (poll, 3, CHECK_N (fds, nfds), nfds, timeout);
@@ -88,17 +41,7 @@ __poll (fds, nfds, timeout)
LIBC_CANCEL_RESET (oldtype);
return result;
-# endif
}
libc_hidden_def (__poll)
weak_alias (__poll, poll)
strong_alias (__poll, __libc_poll)
-
-/* Get the emulation code. */
-# define __poll(fds, nfds, timeout) \
- static internal_function __emulate_poll (fds, nfds, timeout)
-#endif
-
-#if __ASSUME_POLL_SYSCALL == 0
-# include <sysdeps/unix/bsd/poll.c>
-#endif