[PATCH] Fix pthread_cond_signal() FUTEX_WAKE_OP fallback
Dinakar Guniguntala
dino@in.ibm.com
Tue Aug 10 16:37:00 GMT 2010
futex(FUTEX_WAKE_OP) in pthread_cond_signal no longer defaults to
futex(FUTEX_WAKE) when FUTEX_WAKE_OP fails resulting in this API always
failing. This only affects the x86_32 code.
The following patch fixes the problem.
I have tested this with latest glibc git and it fixes the problem.
make check on a kernel that supports FUTEX_WAKE_OP and on one that
does not both work fine.
2010-08-10 Dinakar Guniguntala <dino@in.ibm.com>
Stefan Hajnoczi <stefanha@linux.vnet.ibm.com>
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S: If
FUTEX_WAKE_OP fails make sure to call FUTEX_WAKE instead.
diff --git a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
index 9fc2cbf..43cf663 100644
--- a/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
+++ b/nptl/sysdeps/unix/sysv/linux/i386/i486/pthread_cond_signal.S
@@ -163,7 +163,6 @@ __pthread_cond_signal:
#endif
orl $FUTEX_WAKE, %ecx
- xorl $(FUTEX_WAKE ^ FUTEX_WAKE_OP), %ecx
movl $SYS_futex, %eax
/* %edx should be 1 already from $FUTEX_WAKE_OP syscall.
movl $1, %edx */
More information about the Libc-alpha
mailing list