[11/13] nptl: Replace lll_futex_wake with futex-internal.h
Commit Message
The idea is to make NPTL implementation to use on the functions
provided by futex-internal.h.
Checked on x86_64-linux-gnu and i686-linux-gnu.
---
nptl/pthread_mutex_setprioceiling.c | 4 ++--
nptl/pthread_mutex_unlock.c | 6 +++---
nptl/sem_post.c | 9 ++-------
3 files changed, 7 insertions(+), 12 deletions(-)
Comments
Hi Adhemerval,
> The idea is to make NPTL implementation to use on the functions
> provided by futex-internal.h.
>
> Checked on x86_64-linux-gnu and i686-linux-gnu.
> ---
> nptl/pthread_mutex_setprioceiling.c | 4 ++--
> nptl/pthread_mutex_unlock.c | 6 +++---
> nptl/sem_post.c | 9 ++-------
> 3 files changed, 7 insertions(+), 12 deletions(-)
>
> diff --git a/nptl/pthread_mutex_setprioceiling.c
> b/nptl/pthread_mutex_setprioceiling.c index cbef202579..8f1d6e1326
> 100644 --- a/nptl/pthread_mutex_setprioceiling.c
> +++ b/nptl/pthread_mutex_setprioceiling.c
> @@ -116,8 +116,8 @@ pthread_mutex_setprioceiling (pthread_mutex_t
> *mutex, int prioceiling, | (prioceiling <<
> PTHREAD_MUTEX_PRIO_CEILING_SHIFT); atomic_full_barrier ();
>
> - lll_futex_wake (&mutex->__data.__lock, INT_MAX,
> - PTHREAD_MUTEX_PSHARED (mutex));
> + futex_wake ((unsigned int *)&mutex->__data.__lock, INT_MAX,
> + PTHREAD_MUTEX_PSHARED (mutex));
>
> return 0;
> }
> diff --git a/nptl/pthread_mutex_unlock.c b/nptl/pthread_mutex_unlock.c
> index 2b4abb8ebe..56f1732e6d 100644
> --- a/nptl/pthread_mutex_unlock.c
> +++ b/nptl/pthread_mutex_unlock.c
> @@ -162,7 +162,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t
> *mutex, int decr) private = PTHREAD_ROBUST_MUTEX_PSHARED (mutex);
> if (__glibc_unlikely ((atomic_exchange_rel
> (&mutex->__data.__lock, 0) & FUTEX_WAITERS) != 0))
> - lll_futex_wake (&mutex->__data.__lock, 1, private);
> + futex_wake ((unsigned int *) &mutex->__data.__lock, 1,
> private);
> /* We must clear op_pending after we release the mutex.
> FIXME However, this violates the mutex destruction
> requirements @@ -332,8 +332,8 @@ __pthread_mutex_unlock_full
> (pthread_mutex_t *mutex, int decr) &oldval, newval));
>
> if ((oldval & ~PTHREAD_MUTEX_PRIO_CEILING_MASK) > 1)
> - lll_futex_wake (&mutex->__data.__lock, 1,
> - PTHREAD_MUTEX_PSHARED (mutex));
> + futex_wake ((unsigned int *)&mutex->__data.__lock, 1,
> + PTHREAD_MUTEX_PSHARED (mutex));
>
> int oldprio = newval >> PTHREAD_MUTEX_PRIO_CEILING_SHIFT;
>
> diff --git a/nptl/sem_post.c b/nptl/sem_post.c
> index 88cfc24b30..5dbfb3a214 100644
> --- a/nptl/sem_post.c
> +++ b/nptl/sem_post.c
> @@ -84,19 +84,14 @@ int
> attribute_compat_text_section
> __old_sem_post (sem_t *sem)
> {
> - int *futex = (int *) sem;
> + unsigned int *futex = (unsigned int *) sem;
>
> /* We must need to synchronize with consumers of this token, so
> the atomic increment must have release MO semantics. */
> atomic_write_barrier ();
> (void) atomic_increment_val (futex);
> /* We always have to assume it is a shared semaphore. */
> - int err = lll_futex_wake (futex, 1, LLL_SHARED);
> - if (__builtin_expect (err, 0) < 0)
> - {
> - __set_errno (-err);
> - return -1;
> - }
> + futex_wake (futex, 1, LLL_SHARED);
> return 0;
> }
> compat_symbol (libpthread, __old_sem_post, sem_post, GLIBC_2_0);
Another little step to remove lll_* macros.
Reviewed-by: Lukasz Majewski <lukma@denx.de>
Best regards,
Lukasz Majewski
--
DENX Software Engineering GmbH, Managing Director: Wolfgang Denk
HRB 165235 Munich, Office: Kirchenstr.5, D-82194 Groebenzell, Germany
Phone: (+49)-8142-66989-59 Fax: (+49)-8142-66989-80 Email: lukma@denx.de
@@ -116,8 +116,8 @@ pthread_mutex_setprioceiling (pthread_mutex_t *mutex, int prioceiling,
| (prioceiling << PTHREAD_MUTEX_PRIO_CEILING_SHIFT);
atomic_full_barrier ();
- lll_futex_wake (&mutex->__data.__lock, INT_MAX,
- PTHREAD_MUTEX_PSHARED (mutex));
+ futex_wake ((unsigned int *)&mutex->__data.__lock, INT_MAX,
+ PTHREAD_MUTEX_PSHARED (mutex));
return 0;
}
@@ -162,7 +162,7 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
private = PTHREAD_ROBUST_MUTEX_PSHARED (mutex);
if (__glibc_unlikely ((atomic_exchange_rel (&mutex->__data.__lock, 0)
& FUTEX_WAITERS) != 0))
- lll_futex_wake (&mutex->__data.__lock, 1, private);
+ futex_wake ((unsigned int *) &mutex->__data.__lock, 1, private);
/* We must clear op_pending after we release the mutex.
FIXME However, this violates the mutex destruction requirements
@@ -332,8 +332,8 @@ __pthread_mutex_unlock_full (pthread_mutex_t *mutex, int decr)
&oldval, newval));
if ((oldval & ~PTHREAD_MUTEX_PRIO_CEILING_MASK) > 1)
- lll_futex_wake (&mutex->__data.__lock, 1,
- PTHREAD_MUTEX_PSHARED (mutex));
+ futex_wake ((unsigned int *)&mutex->__data.__lock, 1,
+ PTHREAD_MUTEX_PSHARED (mutex));
int oldprio = newval >> PTHREAD_MUTEX_PRIO_CEILING_SHIFT;
@@ -84,19 +84,14 @@ int
attribute_compat_text_section
__old_sem_post (sem_t *sem)
{
- int *futex = (int *) sem;
+ unsigned int *futex = (unsigned int *) sem;
/* We must need to synchronize with consumers of this token, so the atomic
increment must have release MO semantics. */
atomic_write_barrier ();
(void) atomic_increment_val (futex);
/* We always have to assume it is a shared semaphore. */
- int err = lll_futex_wake (futex, 1, LLL_SHARED);
- if (__builtin_expect (err, 0) < 0)
- {
- __set_errno (-err);
- return -1;
- }
+ futex_wake (futex, 1, LLL_SHARED);
return 0;
}
compat_symbol (libpthread, __old_sem_post, sem_post, GLIBC_2_0);