| /* poll file descriptors. Hurd version. |
| Copyright (C) 1998-2014 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 |
| 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, see |
| <http://www.gnu.org/licenses/>. */ |
| |
| #include <sys/poll.h> |
| #include <sys/time.h> |
| #include <hurd.h> |
| #include <hurd/fd.h> |
| |
| /* Poll the file descriptors described by the NFDS structures starting at |
| FDS. If TIMEOUT is nonzero and not -1, allow TIMEOUT milliseconds for |
| an event to occur; if TIMEOUT is -1, block until an event occurs. |
| Returns the number of file descriptors with events, zero if timed out, |
| or -1 for errors. */ |
| |
| int |
| __poll (fds, nfds, timeout) |
| struct pollfd *fds; |
| nfds_t nfds; |
| int timeout; |
| { |
| struct timespec ts, *to; |
| |
| if (timeout < 0) |
| to = NULL; |
| else |
| { |
| ts.tv_sec = timeout / 1000; |
| ts.tv_nsec = (timeout % 1000) * 1000000; |
| to = &ts; |
| } |
| |
| return _hurd_select (nfds, fds, NULL, NULL, NULL, to, NULL); |
| } |
| libc_hidden_def (__poll) |
| weak_alias (__poll, poll) |