1/*
2 * Copyright 2002-2007, Axel D��rfler, axeld@pinc-software.de. All rights reserved.
3 * Distributed under the terms of the MIT License.
4 */
5
6
7#include <poll.h>
8
9#include <errno.h>
10#include <pthread.h>
11
12#include <syscall_utils.h>
13
14#include <errno_private.h>
15#include <syscalls.h>
16#include <time_private.h>
17
18
19extern "C" int __ppoll(struct pollfd *fds, nfds_t numfds, const struct timespec *tv,
20	const sigset_t *sigMask);
21
22int
23poll(struct pollfd *fds, nfds_t numfds, int timeout)
24{
25	RETURN_AND_SET_ERRNO_TEST_CANCEL(_kern_poll(fds, numfds, timeout * 1000LL,
26		NULL));
27}
28
29
30int
31__ppoll(struct pollfd *fds, nfds_t numfds, const struct timespec *tv,
32	const sigset_t *sigMask)
33{
34	int status;
35	bigtime_t timeout = -1LL;
36	if (tv != NULL && !timespec_to_bigtime(*tv, timeout))
37		RETURN_AND_SET_ERRNO_TEST_CANCEL(EINVAL);
38
39	status = _kern_poll(fds, numfds, timeout, sigMask);
40
41	RETURN_AND_SET_ERRNO_TEST_CANCEL(status);
42}
43
44
45B_DEFINE_WEAK_ALIAS(__ppoll, ppoll);
46