mirror of
https://sourceware.org/git/glibc.git
synced 2024-11-10 07:10:06 +00:00
Update.
2003-09-22 Jakub Jelinek <jakub@redhat.com> * include/atomic.h (atomic_compare_and_exchange_val_rel, atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments to avoid confusion. * sysdeps/unix/opendir.c: Include string.h.
This commit is contained in:
parent
39358e8b2b
commit
365b16029b
@ -1,3 +1,11 @@
|
||||
2003-09-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* include/atomic.h (atomic_compare_and_exchange_val_rel,
|
||||
atomic_compare_and_exchange_bool_rel): Swap oldval/newval arguments
|
||||
to avoid confusion.
|
||||
|
||||
* sysdeps/unix/opendir.c: Include string.h.
|
||||
|
||||
2003-09-22 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* timezone/zdump.c: Update from tzcode2003c.
|
||||
|
@ -1,3 +1,7 @@
|
||||
2003-09-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* attr.c: Include stdlib.h.
|
||||
|
||||
2003-09-18 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/pthread/pthread.h (pthread_getattr_np): Clarify usage.
|
||||
|
@ -18,6 +18,7 @@
|
||||
#include <inttypes.h>
|
||||
#include <stdio.h>
|
||||
#include <stdio_ext.h>
|
||||
#include <stdlib.h>
|
||||
#include <string.h>
|
||||
#include <unistd.h>
|
||||
#include <sys/param.h>
|
||||
|
@ -1 +1 @@
|
||||
NPTL 0.59 by Ulrich Drepper
|
||||
NPTL 0.60 by Ulrich Drepper
|
||||
|
@ -1,3 +1,8 @@
|
||||
2003-09-22 Ulrich Drepper <drepper@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Adjust for latest
|
||||
recommendation from AMD re avoidance of lock prefix.
|
||||
|
||||
2003-09-22 Jakub Jelinek <jakub@redhat.com>
|
||||
|
||||
* sysdeps/unix/sysv/linux/lowlevellock.c (__lll_timedlock_wait): Use
|
||||
|
@ -184,10 +184,7 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
2 - taken by more users */
|
||||
|
||||
|
||||
//#if defined NOT_IN_libc || defined UP
|
||||
/* According to AMD it is not necessary to play tricks with avoiding the
|
||||
lock instruction. */
|
||||
#if 1
|
||||
#if defined NOT_IN_libc || defined UP
|
||||
# define lll_trylock(futex) lll_mutex_trylock (futex)
|
||||
# define lll_lock(futex) lll_mutex_lock (futex)
|
||||
# define lll_unlock(futex) lll_mutex_unlock (futex)
|
||||
@ -195,14 +192,19 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
/* Special versions of the macros for use in libc itself. They avoid
|
||||
the lock prefix when the thread library is not used.
|
||||
|
||||
The code sequence to avoid unnecessary lock prefixes is what the AMD
|
||||
guys suggested. If you do not like it, bring it up with AMD.
|
||||
|
||||
XXX In future we might even want to avoid it on UP machines. */
|
||||
|
||||
# define lll_trylock(futex) \
|
||||
({ unsigned char ret; \
|
||||
__asm __volatile ("cmpl $0, __libc_multiple_threads(%%rip)\n\t" \
|
||||
"je 0f\n\t" \
|
||||
"lock\n" \
|
||||
"0:\tcmpxchgl %2, %1; setne %0" \
|
||||
"lock; cmpxchgl %2, %1\n\t" \
|
||||
"jmp 1f\n" \
|
||||
"0:\tcmpxchgl %2, %1\n\t" \
|
||||
"1:setne %0" \
|
||||
: "=a" (ret), "=m" (futex) \
|
||||
: "r" (LLL_MUTEX_LOCK_INITIALIZER_LOCKED), "m" (futex),\
|
||||
"0" (LLL_MUTEX_LOCK_INITIALIZER) \
|
||||
@ -214,7 +216,9 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
(void) ({ int ignore1, ignore2, ignore3; \
|
||||
__asm __volatile ("cmpl $0, __libc_multiple_threads(%%rip)\n\t" \
|
||||
"je 0f\n\t" \
|
||||
"lock\n" \
|
||||
"lock; cmpxchgl %0, %2\n\t" \
|
||||
"jnz 1f\n\t" \
|
||||
"jmp 2f\n" \
|
||||
"0:\tcmpxchgl %0, %2\n\t" \
|
||||
"jnz 1f\n\t" \
|
||||
".subsection 1\n" \
|
||||
@ -235,7 +239,9 @@ extern int lll_unlock_wake_cb (int *__futex) attribute_hidden;
|
||||
(void) ({ int ignore; \
|
||||
__asm __volatile ("cmpl $0, __libc_multiple_threads(%%rip)\n\t" \
|
||||
"je 0f\n\t" \
|
||||
"lock\n" \
|
||||
"lock; decl %0\n\t" \
|
||||
"jne 1f\n\t" \
|
||||
"jmp 2f\n" \
|
||||
"0:\tdecl %0\n\t" \
|
||||
"jne 1f\n\t" \
|
||||
".subsection 1\n" \
|
||||
|
Loading…
Reference in New Issue
Block a user