From ef276e64724bd5db5acf46913c0a424b0bc9ca06 Mon Sep 17 00:00:00 2001 From: Jakub Jelinek Date: Fri, 30 May 2003 13:46:04 +0000 Subject: (__lll_mutex_cond_lock): New function. (lll_mutex_cond_lock): Define. --- nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h | 13 +++++++++++++ 1 file changed, 13 insertions(+) (limited to 'nptl/sysdeps') diff --git a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h index 4d95319f1c..7934c0ed96 100644 --- a/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h +++ b/nptl/sysdeps/unix/sysv/linux/s390/lowlevellock.h @@ -142,6 +142,19 @@ __lll_mutex_lock (int *futex) } #define lll_mutex_lock(futex) __lll_mutex_lock (&(futex)) +static inline void +__attribute__ ((always_inline)) +__lll_mutex_cond_lock (int *futex) +{ + int oldval; + int newval; + + lll_compare_and_swap (futex, oldval, newval, "lr %2,%1; ahi %2,2"); + if (oldval > 0) + ___lll_mutex_lock (futex, newval); +} +#define lll_mutex_cond_lock(futex) __lll_mutex_cond_lock (&(futex)) + extern int ___lll_mutex_timedlock (int *, const struct timespec *, int) attribute_hidden; -- cgit 1.4.1