Update.
2004-02-13 Ulrich Drepper <drepper@redhat.com> * sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S (__pthread_cond_timedwait): Get internal lock in case timeout has passed before the futex syscall. * sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
This commit is contained in:
parent
2a1ece14a5
commit
3730d95c77
@ -1,3 +1,10 @@
|
||||
2004-02-13 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/i386/i486/pthread_cond_timedwait.S
|
||||
(__pthread_cond_timedwait): Get internal lock in case timeout has
|
||||
passed before the futex syscall.
|
||||
* sysdeps/unix/sysv/linux/x86_64/pthread_cond_timedwait.S: Likewise.
|
||||
|
||||
2004-01-20 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* allocatestack.c: Pretty printing.
|
||||
|
@ -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.
|
||||
|
||||
@ -202,8 +202,20 @@ __pthread_cond_timedwait:
|
||||
|
||||
15: cmpl $-ETIMEDOUT, %esi
|
||||
jne 8b
|
||||
jmp 24f
|
||||
|
||||
13: addl $1, wakeup_seq(%ebx)
|
||||
/* Lock. */
|
||||
13: movl $1, %edx
|
||||
xorl %eax, %eax
|
||||
LOCK
|
||||
#if cond_lock == 0
|
||||
cmpxchgl %edx, (%ebx)
|
||||
#else
|
||||
cmpxchgl %edx, cond_lock(%ebx)
|
||||
#endif
|
||||
jnz 23f
|
||||
|
||||
24: addl $1, wakeup_seq(%ebx)
|
||||
adcl $0, wakeup_seq+4(%ebx)
|
||||
movl $ETIMEDOUT, %esi
|
||||
jmp 14f
|
||||
@ -335,6 +347,16 @@ __pthread_cond_timedwait:
|
||||
js 13b
|
||||
jmp 21b
|
||||
#endif
|
||||
|
||||
/* Locking after time elapsed failed. */
|
||||
23:
|
||||
#if cond_lock == 0
|
||||
movl %ebx, %ecx
|
||||
#else
|
||||
leal cond_lock(%ebx), %ecx
|
||||
#endif
|
||||
call __lll_mutex_lock_wait
|
||||
jmp 24b
|
||||
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
|
||||
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
|
||||
GLIBC_2_3_2)
|
||||
|
@ -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.
|
||||
|
||||
@ -212,8 +212,21 @@ __pthread_cond_timedwait:
|
||||
|
||||
15: cmpq $-ETIMEDOUT, %r14
|
||||
jne 8b
|
||||
jmp 24f
|
||||
|
||||
13: incq wakeup_seq(%rdi)
|
||||
/* Lock. */
|
||||
13: movq 8(%rsp), %rdi
|
||||
movl $1, %esi
|
||||
xorl %eax, %eax
|
||||
LOCK
|
||||
#if cond_lock == 0
|
||||
cmpxchgl %esi, (%rdi)
|
||||
#else
|
||||
cmpxchgl %esi, cond_lock(%rdi)
|
||||
#endif
|
||||
jne 23f
|
||||
|
||||
24: incq wakeup_seq(%rdi)
|
||||
movq $ETIMEDOUT, %r14
|
||||
jmp 14f
|
||||
|
||||
@ -327,6 +340,17 @@ __pthread_cond_timedwait:
|
||||
js 13b
|
||||
jmp 21b
|
||||
#endif
|
||||
|
||||
/* Locking after time elapsed failed. */
|
||||
23:
|
||||
#if cond_lock != 0
|
||||
addq $cond_lock, %rdi
|
||||
#endif
|
||||
callq __lll_mutex_lock_wait
|
||||
#if cond_lock != 0
|
||||
subq $cond_lock, %rdi
|
||||
#endif
|
||||
jmp 24b
|
||||
.LENDCODE:
|
||||
.size __pthread_cond_timedwait, .-__pthread_cond_timedwait
|
||||
versioned_symbol (libpthread, __pthread_cond_timedwait, pthread_cond_timedwait,
|
||||
|
Loading…
x
Reference in New Issue
Block a user