diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-02-05 07:10:33 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-02-05 07:10:33 +0000 |
commit | d45e874013d6c45bb5b77a4022555e72357eddcb (patch) | |
tree | 6388a8ed93b9698db544e19a82a4e462945007df | |
parent | 0289bef9a684e08661b03803b61524d6dab9ffdc (diff) | |
download | glibc-d45e874013d6c45bb5b77a4022555e72357eddcb.tar glibc-d45e874013d6c45bb5b77a4022555e72357eddcb.tar.gz glibc-d45e874013d6c45bb5b77a4022555e72357eddcb.tar.bz2 glibc-d45e874013d6c45bb5b77a4022555e72357eddcb.zip |
Update.
* atomic.h (atomic_compare_and_exchange_acq): Use
__arch_compare_and_exchange_32_acq in return value definition. It
always exists.
(atomic_bit_set): Renamed from atomic_set_bit.
-rw-r--r-- | nptl/ChangeLog | 5 | ||||
-rw-r--r-- | nptl/atomic.h | 16 |
2 files changed, 12 insertions, 9 deletions
diff --git a/nptl/ChangeLog b/nptl/ChangeLog index 542b102f78..f018cccbb3 100644 --- a/nptl/ChangeLog +++ b/nptl/ChangeLog @@ -1,6 +1,9 @@ 2003-02-04 Ulrich Drepper <drepper@redhat.com> - * atomic.h (atomic_bit_set): Renamed from atomic_set_bit. + * atomic.h (atomic_compare_and_exchange_acq): Use + __arch_compare_and_exchange_32_acq in return value definition. It + always exists. + (atomic_bit_set): Renamed from atomic_set_bit. Add missing atomic_ prefixes. * sysdeps/pthread/bits/libc-lock.h (__libc_once): In case no diff --git a/nptl/atomic.h b/nptl/atomic.h index fe390ddf78..c8ea95f834 100644 --- a/nptl/atomic.h +++ b/nptl/atomic.h @@ -27,7 +27,7 @@ #ifndef atomic_compare_and_exchange_acq # define atomic_compare_and_exchange_acq(mem, newval, oldval) \ - ({ __typeof (__arch_compare_and_exchange_8_acq (mem, newval, oldval)) \ + ({ __typeof (__arch_compare_and_exchange_32_acq (mem, newval, oldval)) \ __result; \ if (sizeof (*mem) == 1) \ __result = __arch_compare_and_exchange_8_acq (mem, newval, oldval); \ @@ -82,14 +82,14 @@ #ifndef atomic_bit_set # define atomic_bit_set(mem, bit) \ (void) ({ __typeof (mem) __memp = (mem); \ - while (1) \ - { \ - __typeof (*mem) __oldval = *__memp; \ + __typeof (*mem) __mask = (1 << (bit)); \ + __typeof (*mem) __oldval; \ \ - if (atomic_compare_and_exchange_acq (__memp, \ - __oldval | 1 << bit, \ - __oldval) == 0) \ - break; \ + do \ + __oldval = *__memp; \ + while (atomic_compare_and_exchange_acq (__memp, \ + __oldval | __mask, \ + __oldval)); \ }}) #endif |