diff options
Diffstat (limited to 'io/ppoll.c')
-rw-r--r-- | io/ppoll.c | 76 |
1 files changed, 0 insertions, 76 deletions
diff --git a/io/ppoll.c b/io/ppoll.c deleted file mode 100644 index a035cfe..0000000 --- a/io/ppoll.c +++ /dev/null @@ -1,76 +0,0 @@ -/* Copyright (C) 2006 Free Software Foundation, Inc. - This file is part of the GNU C Library. - Contributed by Ulrich Drepper <drepper@redhat.com>, 2006. - - The GNU C Library is free software; you can redistribute it and/or - modify it under the terms of the GNU Lesser General Public - License as published by the Free Software Foundation; either - version 2.1 of the License, or (at your option) any later version. - - The GNU C Library is distributed in the hope that it will be useful, - but WITHOUT ANY WARRANTY; without even the implied warranty of - MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU - Lesser General Public License for more details. - - You should have received a copy of the GNU Lesser General Public - License along with the GNU C Library; if not, write to the Free - Software Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA - 02111-1307 USA. */ - -#include <errno.h> -#include <limits.h> -#include <signal.h> -#include <stddef.h> /* For NULL. */ -#include <sys/poll.h> -#include <sysdep-cancel.h> - - -int -ppoll (struct pollfd *fds, nfds_t nfds, const struct timespec *timeout, - const sigset_t *sigmask) -{ - int tval = -1; - - /* poll uses a simple millisecond value. Convert it. */ - if (timeout != NULL) - { - if (timeout->tv_sec < 0 - || timeout->tv_nsec < 0 || timeout->tv_nsec >= 1000000000) - { - __set_errno (EINVAL); - return -1; - } - - if (timeout->tv_sec > INT_MAX / 1000 - || (timeout->tv_sec == INT_MAX / 1000 - && ((timeout->tv_nsec + 999999) / 1000000 > INT_MAX % 1000))) - /* We cannot represent the timeout in an int value. Wait - forever. */ - tval = -1; - else - tval = (timeout->tv_sec * 1000 - + (timeout->tv_nsec + 999999) / 1000000); - } - - /* The setting and restoring of the signal mask and the select call - should be an atomic operation. This can't be done without kernel - help. */ - sigset_t savemask; - if (sigmask != NULL) - __sigprocmask (SIG_SETMASK, sigmask, &savemask); - - /* Note the ppoll() is a cancellation point. But since we call - poll() which itself is a cancellation point we do not have - to do anything here. */ - int retval = __poll (fds, nfds, tval); - - if (sigmask != NULL) - __sigprocmask (SIG_SETMASK, &savemask, NULL); - - return retval; -} - -#ifndef ppoll -/* __poll handles cancellation. */ -LIBC_CANCEL_HANDLED (); -#endif |