about summary refs log tree commit diff
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)
downloadglibc-e42a990eccb6ce79650db5fb713b94732df82f4d.tar.gz
glibc-e42a990eccb6ce79650db5fb713b94732df82f4d.tar.xz
glibc-e42a990eccb6ce79650db5fb713b94732df82f4d.zip
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;
 }