X-Git-Url: http://nsz.repo.hu/git/?a=blobdiff_plain;f=src%2Fthread%2F__timedwait.c;h=a673099bbea8d0757732a3793288fbee002e7a41;hb=97d0988fd816ff9474535cf356b53ce6a5acc6ef;hp=988eb70ddf93294417442ed9878b7101cf5994d4;hpb=cc832d8a31e674c3d8ee7168e4a613b5bf8124e0;p=musl diff --git a/src/thread/__timedwait.c b/src/thread/__timedwait.c index 988eb70d..a673099b 100644 --- a/src/thread/__timedwait.c +++ b/src/thread/__timedwait.c @@ -1,7 +1,6 @@ #include #include #include "futex.h" -#define SYSCALL_RETURN_ERRNO #include "syscall.h" #include int __timedwait(volatile int *addr, int val, clockid_t clk, const struct timespec *at, int priv) @@ -18,7 +17,7 @@ int __timedwait(volatile int *addr, int val, clockid_t clk, const struct timespe if (to.tv_sec < 0) return ETIMEDOUT; } if (priv) priv = 128; priv=0; - r = syscall4(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0); - if (r == ETIMEDOUT) return r; + r = -__syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0); + if (r == ETIMEDOUT || r == EINTR) return r; return 0; }