summaryrefslogtreecommitdiff
path: root/libpthread
diff options
context:
space:
mode:
authorneal <neal>2008-06-22 09:16:43 +0000
committerneal <neal>2008-06-22 09:16:43 +0000
commit61edfb886d649a07416a89b4294be738cdb4d061 (patch)
treeed30937d24cd854a8cecf8121e9ae9d94ce60690 /libpthread
parent25f5fdaa9e28b4e768bc5c28435b3275bb60d886 (diff)
viengoos/
2008-06-22 Neal H. Walfield <neal@gnu.org> * thread.h: Include "list.h". (struct thread) [! NDEBUG]: Add field futex_waiter_node. [! NDEBUG]: Instantiate the futex_waiter list class. (futex_waiters) [! NDEBUG]: Declare. * server.c (futex_waiters) [! NDEBUG]: New variable. (server_loop) [! NDEBUG]: If we don't get an RPC for a while, dequeue all thread's enqueued on FUTEX_WAITERS and return EDEADLK. When blocking a thread on a futex, add THREAD to FUTEX_WAITERS. * object.c (object_wait_queue_dequeue) [! NDEBUG]: If THREAD->WAIT_REASON is THREAD_WAIT_FUTEX, unlink THREAD from FUTEX_WAITERS. hurd/ 2008-06-22 Neal H. Walfield <neal@gnu.org> * futex.h [! RM_INTERN]: Include <errno.h>. (futex_wait): On error, set ERRNO and return -1. (futex_timed_wait): Likewise. (futex_wake): Likewise. * mutex.h (ss_mutex_lock): If FUTEX_WAIT returns failure, print some debugging information.
Diffstat (limited to 'libpthread')
-rw-r--r--libpthread/sysdeps/generic/pt-mutex-unlock.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/libpthread/sysdeps/generic/pt-mutex-unlock.c b/libpthread/sysdeps/generic/pt-mutex-unlock.c
index 492dfcb..d2a4257 100644
--- a/libpthread/sysdeps/generic/pt-mutex-unlock.c
+++ b/libpthread/sysdeps/generic/pt-mutex-unlock.c
@@ -37,7 +37,12 @@ __pthread_mutex_unlock (pthread_mutex_t *mutex)
if (_pthread_self ())
{
assert (mutex->owner);
- assert (mutex->owner == _pthread_self ());
+ assertx (mutex->owner == _pthread_self (),
+ "%p(%x) != %p(%x)",
+ mutex->owner,
+ ((struct __pthread *) mutex->owner)->threadid,
+ _pthread_self (),
+ _pthread_self ()->threadid);
mutex->owner = NULL;
}
#endif