+2004-03-01 Ulrich Drepper <drepper@redhat.com>
+
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
+ (__pthread_cond_timedwait): Optimize wakeup test.
+ * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_wait.S
+ (__pthread_cond_wait): Likewise.
+ * sysdeps/pthread/pthread_cond_wait.c (__pthread_cond_wait): Likewise.
+ * sysdeps/pthread/pthread_cond_timedwait.c (__pthread_cond_timedwait):
+ Likewise.
+
2004-02-29 Ulrich Drepper <drepper@redhat.com>
* sysdeps/unix/sysv/linux/i386/i486/lowlevellock.S
val = cv->wakeup_seq;
- if (val > seq && cv->woken_seq < val) {
+ if (val != seq && cv->woken_seq != val) {
ret = 0;
break;
}
/* Check whether we are eligible for wakeup. */
val = cond->__data.__wakeup_seq;
- if (val > seq && cond->__data.__woken_seq < val)
+ if (val != seq && cond->__data.__woken_seq != val)
break;
/* Not woken yet. Maybe the time expired? */
/* Check whether we are eligible for wakeup. */
val = cond->__data.__wakeup_seq;
}
- while (! (val > seq && cond->__data.__woken_seq < val));
+ while (val == seq || cond->__data.__woken_seq == val);
/* Another thread woken up. */
++cond->__data.__woken_seq;
movl wakeup_seq+4(%ebx), %edx
cmpl 16(%esp), %edx
- ja 7f
- jb 15f
+ jne 7f
cmpl 12(%esp), %edi
- jbe 15f
+ je 15f
7: cmpl %ecx, %edx
- ja 9f
- jb 15f
+ jne 9f
cmp %eax, %edi
- ja 9f
+ jne 9f
15: cmpl $-ETIMEDOUT, %esi
jne 8b
-/* Copyright (C) 2002, 2003 Free Software Foundation, Inc.
+/* Copyright (C) 2002, 2003, 2004 Free Software Foundation, Inc.
This file is part of the GNU C Library.
Contributed by Ulrich Drepper <drepper@redhat.com>, 2002.
movl wakeup_seq+4(%ebx), %edx
cmpl 8(%esp), %edx
- ja 7f
- jb 8b
+ jne 7f
cmpl 4(%esp), %edi
- jbe 8b
+ je 8b
7: cmpl %ecx, %edx
- ja 9f
- jb 8b
+ jne 9f
cmp %eax, %edi
- jna 8b
+ je 8b
9: addl $1, woken_seq(%ebx)
adcl $0, woken_seq+4(%ebx)