mirror of
git://sourceware.org/git/glibc.git
synced 2024-11-27 03:41:23 +08:00
Update.
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.
This commit is contained in:
parent
b7fe377cba
commit
cff08c8110
@ -1,3 +1,13 @@
|
||||
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
|
||||
|
@ -65,7 +65,7 @@ cond_timedwait(cv, mutex, timeout):
|
||||
|
||||
val = cv->wakeup_seq;
|
||||
|
||||
if (val > seq && cv->woken_seq < val) {
|
||||
if (val != seq && cv->woken_seq != val) {
|
||||
ret = 0;
|
||||
break;
|
||||
}
|
||||
|
@ -159,7 +159,7 @@ __pthread_cond_timedwait (cond, mutex, abstime)
|
||||
|
||||
/* 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? */
|
||||
|
@ -143,7 +143,7 @@ __pthread_cond_wait (cond, mutex)
|
||||
/* 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;
|
||||
|
@ -190,16 +190,14 @@ __pthread_cond_timedwait:
|
||||
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
|
||||
|
@ -1,4 +1,4 @@
|
||||
/* 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.
|
||||
|
||||
@ -133,16 +133,14 @@ __pthread_cond_wait:
|
||||
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)
|
||||
|
Loading…
Reference in New Issue
Block a user