diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-11-21 10:00:11 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-11-21 10:00:11 +0000 |
commit | e42a990eccb6ce79650db5fb713b94732df82f4d (patch) | |
tree | 95d395c4c8c069d3d93fe99895c0fb5415ef9d48 /nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S | |
parent | bf68b2366d75a427ec74084e97e242d460196db0 (diff) | |
download | glibc-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/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S | 10 |
1 files changed, 5 insertions, 5 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S index e6b2bbf19c..8e26681b3b 100644 --- a/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S +++ b/nptl/sysdeps/unix/sysv/linux/x86_64/pthread_cond_broadcast.S @@ -72,8 +72,11 @@ __pthread_cond_broadcast: decl cond_lock-wakeup_seq(%rdi) jne 7f +8: cmpq $-1, %r8 + je 9f + /* Wake up all threads. */ -8: movq $FUTEX_REQUEUE, %rsi + movq $FUTEX_REQUEUE, %rsi movq $SYS_futex, %rax movl $1, %edx movq $0x7fffffff, %r10 @@ -82,10 +85,9 @@ __pthread_cond_broadcast: #ifndef __ASSUME_FUTEX_REQUEUE cmpq $-EINVAL, %rax je 9f -10: #endif - xorl %eax, %eax +10: xorl %eax, %eax retq .align 16 @@ -119,14 +121,12 @@ __pthread_cond_broadcast: subq $cond_lock-wakeup_seq, %rdi jmp 8b -#ifndef __ASSUME_FUTEX_REQUEUE 9: /* The futex requeue functionality is not available. */ movq $0x7fffffff, %rdx movq $FUTEX_WAKE, %rsi movq $SYS_futex, %rax syscall jmp 10b -#endif .size __pthread_cond_broadcast, .-__pthread_cond_broadcast versioned_symbol (libpthread, __pthread_cond_broadcast, pthread_cond_broadcast, GLIBC_2_3_2) |