Message ID | 20211111162428.2286605-3-hjl.tools@gmail.com |
---|---|
State | Committed |
Commit | 0b82747dc48d5bf0871bdc6da8cb6eec1256355f |
Headers | show |
Series | Optimize CAS [BZ #28537] | expand |
Context | Check | Description |
---|---|---|
dj/TryBot-apply_patch | success | Patch applied to master at the time it was sent |
The 11/11/2021 08:24, H.J. Lu via Libc-alpha wrote: > Replace boolean CAS with value CAS to avoid the extra load. this looks good in general. Reviewed-by: Szabolcs Nagy <szabolcs.nagy@arm.com> > --- > nptl/pthread_mutex_lock.c | 10 +++++----- > 1 file changed, 5 insertions(+), 5 deletions(-) > > diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c > index 72058c719c..762059b230 100644 > --- a/nptl/pthread_mutex_lock.c > +++ b/nptl/pthread_mutex_lock.c > @@ -304,12 +304,12 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) > meantime. */ > if ((oldval & FUTEX_WAITERS) == 0) > { > - if (atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock, > - oldval | FUTEX_WAITERS, > - oldval) > - != 0) > + int val; > + if ((val = atomic_compare_and_exchange_val_acq > + (&mutex->__data.__lock, oldval | FUTEX_WAITERS, > + oldval)) != oldval) > { > - oldval = mutex->__data.__lock; > + oldval = val; > continue; > } > oldval |= FUTEX_WAITERS; > -- > 2.33.1 >
On Nov 11 2021, H.J. Lu wrote: > diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c > index 72058c719c..762059b230 100644 > --- a/nptl/pthread_mutex_lock.c > +++ b/nptl/pthread_mutex_lock.c > @@ -304,12 +304,12 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) > meantime. */ > if ((oldval & FUTEX_WAITERS) == 0) > { > - if (atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock, > - oldval | FUTEX_WAITERS, > - oldval) > - != 0) > + int val; > + if ((val = atomic_compare_and_exchange_val_acq > + (&mutex->__data.__lock, oldval | FUTEX_WAITERS, > + oldval)) != oldval) Please move the assignment out of the condition. Andreas.
diff --git a/nptl/pthread_mutex_lock.c b/nptl/pthread_mutex_lock.c index 72058c719c..762059b230 100644 --- a/nptl/pthread_mutex_lock.c +++ b/nptl/pthread_mutex_lock.c @@ -304,12 +304,12 @@ __pthread_mutex_lock_full (pthread_mutex_t *mutex) meantime. */ if ((oldval & FUTEX_WAITERS) == 0) { - if (atomic_compare_and_exchange_bool_acq (&mutex->__data.__lock, - oldval | FUTEX_WAITERS, - oldval) - != 0) + int val; + if ((val = atomic_compare_and_exchange_val_acq + (&mutex->__data.__lock, oldval | FUTEX_WAITERS, + oldval)) != oldval) { - oldval = mutex->__data.__lock; + oldval = val; continue; } oldval |= FUTEX_WAITERS;