summaryrefslogtreecommitdiff
path: root/nptl/pthread_cond_init.c
diff options
context:
space:
mode:
authorUlrich Drepper <drepper@redhat.com>2003-11-21 10:00:11 +0000
committerUlrich Drepper <drepper@redhat.com>2003-11-21 10:00:11 +0000
commite42a990eccb6ce79650db5fb713b94732df82f4d (patch)
tree95d395c4c8c069d3d93fe99895c0fb5415ef9d48 /nptl/pthread_cond_init.c
parentbf68b2366d75a427ec74084e97e242d460196db0 (diff)
Update.
* sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Don't store mutex address if the current value is ~0l. * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait): Likewise. * sysdeps/pthread/pthread_cond_broadcast.c (__pthread_cond_broadcast): Don't use requeue for pshared condvars. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_wait.S (__pthread_cond_wait): Don't store mutex address if the current value is ~0l. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S (__pthread_cond_timedwait): Likewise. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S (__pthread_cond_broadcast): Don't use requeue for pshared condvars. * pthread_cond_init.c (__pthread_cond_init): Initialize __mutex element with ~0l for pshared condvars, with NULL otherwise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S (__pthread_cond_wait): Don't store mutex address if the current value is ~0l. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S (__pthread_cond_timedwait): Likewise. * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_broadcast.S (__pthread_cond_broadcast): Don't use requeue for pshared condvars.
Diffstat (limited to 'nptl/pthread_cond_init.c')
-rw-r--r--nptl/pthread_cond_init.c2
1 files changed, 2 insertions, 0 deletions
diff --git a/nptl/pthread_cond_init.c b/nptl/pthread_cond_init.c
index 73ae4321b0..bb7c6d6ca1 100644
--- a/nptl/pthread_cond_init.c
+++ b/nptl/pthread_cond_init.c
@@ -36,6 +36,8 @@ __pthread_cond_init (cond, cond_attr)
cond->__data.__total_seq = 0;
cond->__data.__wakeup_seq = 0;
cond->__data.__woken_seq = 0;
+ cond->__data.__mutex = (icond_attr == NULL || (icond_attr->value & 1) == 0
+ ? NULL : (void *) ~0l);
return 0;
}