From a113434cd68ce30642c4995b1caadcd084be6f09 Mon Sep 17 00:00:00 2001 From: Rich Felker Date: Wed, 6 Apr 2011 12:24:34 -0400 Subject: major semaphore improvements (performance and correctness) 1. make sem_[timed]wait interruptible by signals, per POSIX 2. keep a waiter count in order to avoid unnecessary futex wake syscalls --- src/thread/__timedwait.c | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) (limited to 'src/thread/__timedwait.c') diff --git a/src/thread/__timedwait.c b/src/thread/__timedwait.c index 28b777bc..a673099b 100644 --- a/src/thread/__timedwait.c +++ b/src/thread/__timedwait.c @@ -18,6 +18,6 @@ int __timedwait(volatile int *addr, int val, clockid_t clk, const struct timespe } if (priv) priv = 128; priv=0; r = -__syscall(__NR_futex, (long)addr, FUTEX_WAIT | priv, val, at ? (long)&to : 0); - if (r == ETIMEDOUT) return r; + if (r == ETIMEDOUT || r == EINTR) return r; return 0; } -- cgit v1.2.1