From 9eb270404ceced4a2dc49d875c0b4e674e0b51d4 Mon Sep 17 00:00:00 2001 From: "Neal H. Walfield" Date: Sun, 22 Jun 2008 08:58:20 +0000 Subject: 2008-06-22 Neal H. Walfield * sysdeps/generic/pt-mutex-timedlock.c (__pthread_mutex_timedlock_internal): Don't set MUTEX->OWNER here. * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock): Set it here to WAKEUP. --- ChangeLog | 7 +++++++ sysdeps/generic/pt-mutex-timedlock.c | 11 ++++++----- sysdeps/generic/pt-mutex-unlock.c | 4 ++++ 3 files changed, 17 insertions(+), 5 deletions(-) diff --git a/ChangeLog b/ChangeLog index 9b0628b..b8a3b18 100644 --- a/ChangeLog +++ b/ChangeLog @@ -1,3 +1,10 @@ +2008-06-22 Neal H. Walfield + + * sysdeps/generic/pt-mutex-timedlock.c + (__pthread_mutex_timedlock_internal): Don't set MUTEX->OWNER here. + * sysdeps/generic/pt-mutex-unlock.c (__pthread_mutex_unlock): Set + it here to WAKEUP. + 2008-06-07 Neal H. Walfield * pthread/pt-internal.h (__pthread_queue_iterate): Use 1, not diff --git a/sysdeps/generic/pt-mutex-timedlock.c b/sysdeps/generic/pt-mutex-timedlock.c index 6db30c5..265a453 100644 --- a/sysdeps/generic/pt-mutex-timedlock.c +++ b/sysdeps/generic/pt-mutex-timedlock.c @@ -141,15 +141,16 @@ __pthread_mutex_timedlock_internal (struct __pthread_mutex *mutex, else __pthread_block (self); - if (! mutex->attr || mutex->attr->mutex_type == PTHREAD_MUTEX_NORMAL) - { #ifndef NDEBUG - mutex->owner = self; + assert (mutex->owner == self); #endif - } - else + + if (mutex->attr) switch (mutex->attr->mutex_type) { + case PTHREAD_MUTEX_NORMAL: + break; + case PTHREAD_MUTEX_RECURSIVE: assert (mutex->locks == 0); mutex->locks = 1; diff --git a/sysdeps/generic/pt-mutex-unlock.c b/sysdeps/generic/pt-mutex-unlock.c index a987225..492dfcb 100644 --- a/sysdeps/generic/pt-mutex-unlock.c +++ b/sysdeps/generic/pt-mutex-unlock.c @@ -78,6 +78,10 @@ __pthread_mutex_unlock (pthread_mutex_t *mutex) wakeup = mutex->__queue; __pthread_dequeue (wakeup); +#ifndef NDEBUG + mutex->owner = wakeup; +#endif + /* We do not unlock MUTEX->held: we are transferring the ownership to the thread that we are waking up. */ -- cgit v1.2.3