]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
nptl: Replace lll_futex_wake with futex-internal.h
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Mon, 23 Nov 2020 13:38:12 +0000 (10:38 -0300)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Wed, 25 Nov 2020 13:43:18 +0000 (10:43 -0300)
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.

Reviewed-by: Lukasz Majewski <lukma@denx.de>
nptl/pthread_mutex_setprioceiling.c
nptl/pthread_mutex_unlock.c
nptl/sem_post.c

index cbef202579d09de88f2a7d00ef7fcd099af88ef7..8f1d6e13264f04761f4d6ab0f584efcc18ccfe32 100644 (file)
@@ -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;
 }
index 2b4abb8ebe76c446e35331e41691c672296a11dc..56f1732e6d41e8675555be8f81b0127a5b045995 100644 (file)
@@ -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;
 
index 88cfc24b3018abac914be3dd99587a3b8fac3bc2..5dbfb3a214d511612060ecf4c912de9ef95b979b 100644 (file)
@@ -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);