diff options
Diffstat (limited to 'src/signal')
-rw-r--r-- | src/signal/sigtimedwait.c | 12 |
1 files changed, 6 insertions, 6 deletions
diff --git a/src/signal/sigtimedwait.c b/src/signal/sigtimedwait.c index 155185de..0a7c5eac 100644 --- a/src/signal/sigtimedwait.c +++ b/src/signal/sigtimedwait.c @@ -1,12 +1,12 @@ #include <signal.h> +#include <errno.h> #include "syscall.h" int sigtimedwait(const sigset_t *mask, siginfo_t *si, const struct timespec *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 = syscall4(__NR_rt_sigtimedwait, (long)mask, (long)si, (long)timeout, SYSCALL_SIGSET_SIZE); + } while (ret<0 && errno==EINTR); + return ret; } |