X-Git-Url: http://nsz.repo.hu/git/?p=musl;a=blobdiff_plain;f=src%2Fsignal%2Fsigtimedwait.c;h=0739986b1959b9919c86974dcc7babee79877d2a;hp=155185de8ab79a99dd05ba4dc402c1d4087da6fd;hb=ccc7b4c3a17ade90de71e1e0f44deebbffd646e6;hpb=0b44a0315b47dd8eced9f3b7f31580cf14bbfc01 diff --git a/src/signal/sigtimedwait.c b/src/signal/sigtimedwait.c index 155185de..0739986b 100644 --- a/src/signal/sigtimedwait.c +++ b/src/signal/sigtimedwait.c @@ -1,12 +1,13 @@ #include +#include #include "syscall.h" +#include "libc.h" -int sigtimedwait(const sigset_t *mask, siginfo_t *si, const struct timespec *timeout) +int sigtimedwait(const sigset_t *restrict mask, siginfo_t *restrict si, const struct timespec *restrict timeout) { - long k_timeout[2]; - if (timeout) { - k_timeout[0] = timeout->tv_sec; - k_timeout[1] = timeout->tv_nsec; - } - return syscall4(__NR_rt_sigtimedwait, (long)mask, (long)si, timeout ? (long)k_timeout : 0, SYSCALL_SIGSET_SIZE); + int ret; + do ret = syscall_cp(SYS_rt_sigtimedwait, mask, + si, timeout, _NSIG/8); + while (ret<0 && errno==EINTR); + return ret; }