summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authordavidxu <davidxu@FreeBSD.org>2014-03-17 05:03:53 +0000
committerdavidxu <davidxu@FreeBSD.org>2014-03-17 05:03:53 +0000
commitfedd0354840e4cdb1e121076e56896edd30432b0 (patch)
tree483c46ff8b7817a42d0c065cc25581e6d21bb351
parentbcee023c7fdb5c4cabea2dd9180eaf0781eee8c2 (diff)
downloadFreeBSD-src-fedd0354840e4cdb1e121076e56896edd30432b0.zip
FreeBSD-src-fedd0354840e4cdb1e121076e56896edd30432b0.tar.gz
MFC r263107:
To avoid missing a chance to cancel thread, call _pthread_testcancel at the beginning of _sem_timedwait. Submitted by: Eric van Gyzen &lt; eric at vangyzen dot net &gt;
-rw-r--r--lib/libc/gen/sem_new.c1
1 files changed, 1 insertions, 0 deletions
diff --git a/lib/libc/gen/sem_new.c b/lib/libc/gen/sem_new.c
index 1bf84ea..9a2ab27 100644
--- a/lib/libc/gen/sem_new.c
+++ b/lib/libc/gen/sem_new.c
@@ -381,6 +381,7 @@ _sem_timedwait(sem_t * __restrict sem,
return (-1);
retval = 0;
+ _pthread_testcancel();
for (;;) {
while ((val = sem->_kern._count) > 0) {
if (atomic_cmpset_acq_int(&sem->_kern._count, val, val - 1))
OpenPOWER on IntegriCloud