blob: 1bb6852d2395613ba2712f1e6a8111572801e78c [file] [log] [blame]
/*
* pselect.c
*/
#include <sys/select.h>
#include <sys/syscall.h>
#if defined(__NR_pselect) && !_KLIBC_USE_RT_SIG
/* Don't need to do anything here; use syscall stub directly */
#elif defined(__NR_pselect7)
__extern int __pselect7(int, fd_set *, fd_set *, fd_set *,
const struct timespec *, const sigset_t *, size_t);
int pselect(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds,
const struct timespec *timeout, const sigset_t * sigmask)
{
return __pselect7(n, readfds, writefds, exceptfds,
timeout, sigmask, sizeof *sigmask);
}
#elif defined(__NR_pselect6)
struct __pselect6 {
const sigset_t *sigmask;
size_t sigsize;
};
__extern int __pselect6(int, fd_set *, fd_set *, fd_set *,
const struct timespec *, const struct __pselect6 *);
int pselect(int n, fd_set * readfds, fd_set * writefds, fd_set * exceptfds,
const struct timespec *timeout, const sigset_t * sigmask)
{
struct __pselect6 extended_sigmask = { sigmask, sizeof *sigmask };
return __pselect6(n, readfds, writefds, exceptfds,
timeout, &extended_sigmask);
}
#endif