diff options
Diffstat (limited to 'sysdeps/unix/sysv/linux/poll.c')
-rw-r--r-- | sysdeps/unix/sysv/linux/poll.c | 61 |
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 |