diff options
author | Jakub Jelinek <jakub@redhat.com> | 2007-08-15 20:57:36 +0000 |
---|---|---|
committer | Jakub Jelinek <jakub@redhat.com> | 2007-08-15 20:57:36 +0000 |
commit | 91ed9442cea3802c96b69553d6653ed01df7c990 (patch) | |
tree | 53f0dc462efd0fc02dee924f744744a39041d765 /nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h | |
parent | c67c02731b6507c5351bca70451441d9a26113ef (diff) |
Updated to fedora-glibc-20070815T2049cvs/fedora-glibc-2_6_90-10
Diffstat (limited to 'nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h')
-rw-r--r-- | nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h | 60 |
1 files changed, 29 insertions, 31 deletions
diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h index 7fee435f12..c9347e98b2 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h @@ -291,31 +291,29 @@ __lll_robust_timedlock (int *futex, const struct timespec *abstime, __lll_robust_timedlock (&(futex), abstime, id, private) -static inline void -__attribute__ ((always_inline)) -__lll_unlock (int *futex, int private) -{ - int oldval; - int newval = 0; - - lll_compare_and_swap (futex, oldval, newval, "slr %2,%2"); - if (__builtin_expect (oldval > 1, 0)) - lll_futex_wake (futex, 1, private); -} +#define __lll_unlock(futex, private) \ + (void) \ + ({ int __oldval; \ + int __newval = 0; \ + int *__futexp = (futex); \ + \ + lll_compare_and_swap (__futexp, __oldval, __newval, "slr %2,%2"); \ + if (__builtin_expect (__oldval > 1, 0)) \ + lll_futex_wake (__futexp, 1, private); \ + }) #define lll_unlock(futex, private) __lll_unlock(&(futex), private) -static inline void -__attribute__ ((always_inline)) -__lll_robust_unlock (int *futex, int private) -{ - int oldval; - int newval = 0; - - lll_compare_and_swap (futex, oldval, newval, "slr %2,%2"); - if (__builtin_expect (oldval & FUTEX_WAITERS, 0)) - lll_futex_wake (futex, 1, private); -} +#define __lll_robust_unlock(futex, private) \ + (void) \ + ({ int __oldval; \ + int __newval = 0; \ + int *__futexp = (futex); \ + \ + lll_compare_and_swap (__futexp, __oldval, __newval, "slr %2,%2"); \ + if (__builtin_expect (__oldval & FUTEX_WAITERS, 0)) \ + lll_futex_wake (__futexp, 1, private); \ + }) #define lll_robust_unlock(futex, private) \ __lll_robust_unlock(&(futex), private) @@ -331,15 +329,15 @@ __lll_robust_unlock (int *futex, int private) wakeup when the clone terminates. The memory location contains the thread ID while the clone is running and is reset to zero afterwards. */ -static inline void -__attribute__ ((always_inline)) -__lll_wait_tid (int *ptid) -{ - int tid; - - while ((tid = *ptid) != 0) - lll_futex_wait (ptid, tid, LLL_SHARED); -} +#define __lll_wait_tid(ptid) \ + do \ + { \ + int __tid; \ + \ + while ((__tid = *ptid) != 0) \ + lll_futex_wait (ptid, __tid, LLL_SHARED); \ + } \ + while (0) #define lll_wait_tid(tid) __lll_wait_tid(&(tid)) extern int __lll_timedwait_tid (int *, const struct timespec *) |