From 5d4f57bd9398d5b4d0ed26af9d4bf6e65c28c73c Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Sat, 31 May 2003 06:30:37 +0000 Subject: Update. 2003-05-30 Ulrich Drepper * scripts/config.guess: Update from master copy. * scripts/config.sub: Likewise. --- nptl/Banner | 2 +- nptl/ChangeLog | 10 ++++++++++ nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h | 8 ++++---- nptl/sysdeps/unix/sysv/linux/lowlevellock.c | 8 +++++--- nptl/tst-join4.c | 2 +- 5 files changed, 21 insertions(+), 9 deletions(-) (limited to 'nptl') diff --git a/nptl/Banner b/nptl/Banner index 32b4eee..6be466f 100644 --- a/nptl/Banner +++ b/nptl/Banner @@ -1 +1 @@ -NPTL 0.42 by Ulrich Drepper +NPTL 0.43 by Ulrich Drepper diff --git a/nptl/ChangeLog b/nptl/ChangeLog index fbe077a..ede5926 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,5 +1,15 @@ 2003-05-30 Ulrich Drepper + * sysdeps/unix/sysv/linux/ia64/lowlevellock.h + (lll_futex_timed_wait): Use int for futex value parameter. + (lll_futex_wake): Likewise. + (lll_futex_requeue): Likewise. + + * sysdeps/unix/sysv/linux/lowlevellock.c (__lll_lock_wait): + Replace one memory operation with one register operation. + + * tst-join4.c (do_test): Fix error message. + * tst-rwlock6.c (do_test): Use correct format specifier. * sysdeps/unix/sysv/linux/i386/i486/lowlevelmutex.S diff --git a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h index b7f018b..4717470 100644 --- a/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/ia64/lowlevellock.h @@ -54,7 +54,7 @@ ({ \ register long int __o0 asm ("out0") = (long int) (futex); \ register long int __o1 asm ("out1") = FUTEX_WAIT; \ - register long int __o2 asm ("out2") = (long int) (val); \ + register int __o2 asm ("out2") = (int) (val); \ register long int __o3 asm ("out3") = (long int) (timespec); \ register long int __r8 asm ("r8"); \ register long int __r10 asm ("r10"); \ @@ -74,7 +74,7 @@ ({ \ register long int __o0 asm ("out0") = (long int) (futex); \ register long int __o1 asm ("out1") = FUTEX_WAKE; \ - register long int __o2 asm ("out2") = (long int) (nr); \ + register int __o2 asm ("out2") = (int) (nr); \ register long int __r8 asm ("r8"); \ register long int __r10 asm ("r10"); \ register long int __r15 asm ("r15") = SYS_futex; \ @@ -93,8 +93,8 @@ ({ \ register long int __o0 asm ("out0") = (long int) (futex); \ register long int __o1 asm ("out1") = FUTEX_REQUEUE; \ - register long int __o2 asm ("out2") = (long int) (nr_wake); \ - register long int __o3 asm ("out3") = (long int) (nr_move); \ + register int __o2 asm ("out2") = (int) (nr_wake); \ + register int __o3 asm ("out3") = (int) (nr_move); \ register long int __o4 asm ("out4") = (long int) (mutex); \ register long int __r8 asm ("r8"); \ register long int __r10 asm ("r10"); \ diff --git a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c index db10573..eb3e689 100644 --- a/nptl/sysdeps/unix/sysv/linux/lowlevellock.c +++ b/nptl/sysdeps/unix/sysv/linux/lowlevellock.c @@ -27,13 +27,15 @@ void __lll_lock_wait (int *futex, int val) { + /* In the loop we are going to add 2 instead of 1 which is what + the caller did. Account for that. */ + --val; do { - lll_futex_wait (futex, val + 1); - val = atomic_exchange_and_add (futex, 1); + lll_futex_wait (futex, val + 2); + val = atomic_exchange_and_add (futex, 2); } while (val != 0); - *futex = 2; } hidden_proto (__lll_lock_wait) diff --git a/nptl/tst-join4.c b/nptl/tst-join4.c index fbf1b10..0b60590 100644 --- a/nptl/tst-join4.c +++ b/nptl/tst-join4.c @@ -84,7 +84,7 @@ do_test (void) if (pthread_detach (th[0]) != 0) { - puts ("could detach 1st thread"); + puts ("could not detach 1st thread"); exit (1); } -- cgit v1.1