]> sourceware.org Git - glibc.git/commitdiff
Get rid of lll_robust_trylock.
authorRoland McGrath <roland@hack.frob.com>
Thu, 10 Jul 2014 17:57:57 +0000 (10:57 -0700)
committerRoland McGrath <roland@hack.frob.com>
Thu, 10 Jul 2014 17:57:57 +0000 (10:57 -0700)
17 files changed:
ChangeLog
nptl/pthread_mutex_trylock.c
sysdeps/unix/sysv/linux/aarch64/lowlevellock.h
sysdeps/unix/sysv/linux/alpha/lowlevellock.h
sysdeps/unix/sysv/linux/arm/lowlevellock.h
sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h
sysdeps/unix/sysv/linux/i386/lowlevellock.h
sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h
sysdeps/unix/sysv/linux/m68k/lowlevellock.h
sysdeps/unix/sysv/linux/microblaze/lowlevellock.h
sysdeps/unix/sysv/linux/mips/lowlevellock.h
sysdeps/unix/sysv/linux/powerpc/lowlevellock.h
sysdeps/unix/sysv/linux/s390/lowlevellock.h
sysdeps/unix/sysv/linux/sh/lowlevellock.h
sysdeps/unix/sysv/linux/sparc/lowlevellock.h
sysdeps/unix/sysv/linux/tile/lowlevellock.h
sysdeps/unix/sysv/linux/x86_64/lowlevellock.h

index 16b86e305547d6d9c90cc84d7be3473e3856e4ae..0bd02c4d09fe432536b8193e99cf0bc7ba4016b6 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,3 +1,25 @@
+2014-07-10  Roland McGrath  <roland@hack.frob.com>
+
+       * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
+       Use atomic_compare_and_exchange_val_acq directly rather than
+       lll_robust_trylock.
+       * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h
+       (__lll_robust_trylock, lll_robust_trylock): Removed.
+       * sysdeps/unix/sysv/linux/alpha/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/arm/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/hppa/nptl/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/i386/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/ia64/nptl/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/m68k/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/microblaze/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/mips/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/powerpc/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/s390/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/sh/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/sparc/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/tile/lowlevellock.h: Likewise.
+       * sysdeps/unix/sysv/linux/x86_64/lowlevellock.h: Likewise.
+
 2014-07-02  Florian Weimer  <fweimer@redhat.com>
 
        * manual/locale.texi (Locale Names): New section documenting
index e46f22ca2c044a3a8e77bc2c8540634dbda3f7a5..0867b065331ffaefce8d6def60101de7175a2b51 100644 (file)
@@ -72,7 +72,7 @@ __pthread_mutex_trylock (mutex)
     elision:
       if (lll_trylock_elision (mutex->__data.__lock,
                               mutex->__data.__elision) != 0)
-        break;
+       break;
       /* Don't record the ownership.  */
       return 0;
 
@@ -159,7 +159,8 @@ __pthread_mutex_trylock (mutex)
                }
            }
 
-         oldval = lll_robust_trylock (mutex->__data.__lock, id);
+         oldval = atomic_compare_and_exchange_val_acq (&mutex->__data.__lock,
+                                                       id, 0);
          if (oldval != 0 && (oldval & FUTEX_OWNER_DIED) == 0)
            {
              THREAD_SETMEM (THREAD_SELF, robust_head.list_op_pending, NULL);
index 69a5f278eb5b74efaf918dc827ca7cbd5e9fb6e2..0e61f18bf91b855852056fa533403915aa06f7e8 100644 (file)
 #define lll_cond_trylock(lock) \
   atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
 
-#define __lll_robust_trylock(futex, id) \
-  (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
-#define lll_robust_trylock(lock, id) \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index 361bd342f1595dc887ec7cacf3e7a5cccc30bd4a..584094f780d9d24586f6450240878ec387a34ac2 100644 (file)
@@ -187,14 +187,6 @@ __lll_cond_trylock(int *futex)
 #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
 
 
-static inline int __attribute__((always_inline))
-__lll_robust_trylock(int *futex, int id)
-{
-  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(lock, id) \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index 5d19434cdc2d41dbf5521574adb3540e4362443f..58699718a170207d71e536ba07edcaa6e28f4f76 100644 (file)
 #define lll_cond_trylock(lock) \
   atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
 
-#define __lll_robust_trylock(futex, id) \
-  (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
-#define lll_robust_trylock(lock, id) \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index bd16f77cf2caa223e5ec974eae5193d6ef226842..426984f08fd3a703aeffa13757dc0add2fde5a1f 100644 (file)
@@ -193,15 +193,6 @@ typedef int lll_lock_t;
     INTERNAL_SYSCALL_ERROR_P (__ret, __err);                                 \
   })
 
-static inline int
-__attribute__ ((always_inline))
-__lll_robust_trylock (int *futex, int id)
-{
-  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(futex, id) \
-  __lll_robust_trylock (&(futex), id)
-
 static inline int
 __attribute__ ((always_inline))
 __lll_cond_trylock (int *futex)
index 6903f92bd077211156083d0b15f225e595a1ac47..02ec8f7e7e09c93b1e21ce2ccaad1286917e61c6 100644 (file)
                       : "memory");                                           \
      ret; })
 
-#define lll_robust_trylock(futex, id) \
-  ({ int ret;                                                                \
-     __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1"                          \
-                      : "=a" (ret), "=m" (futex)                             \
-                      : "r" (id), "m" (futex),                               \
-                        "0" (LLL_LOCK_INITIALIZER)                           \
-                      : "memory");                                           \
-     ret; })
-
 
 #define lll_cond_trylock(futex) \
   ({ int ret;                                                                \
index 9d323955a5e6271df29ebb3584a743e82bd01f95..845a1533d1633d5b39c934ba43ffdb6ae25e4289 100644 (file)
@@ -169,12 +169,6 @@ while (0)
 #define lll_trylock(futex) __lll_trylock (&(futex))
 
 
-#define __lll_robust_trylock(futex, id) \
-  (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
-#define lll_robust_trylock(futex, id) \
-  __lll_robust_trylock (&(futex), id)
-
-
 #define __lll_cond_trylock(futex) \
   (atomic_compare_and_exchange_val_acq (futex, 2, 0) != 0)
 #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex))
index ba36d93090c00b8cf5565bca3946d156c4c35171..5ab52187217422e158fb460bbad1982564cbe92f 100644 (file)
 #define lll_cond_trylock(lock)                         \
   atomic_compare_and_exchange_val_acq (&(lock), 2, 0)
 
-#define lll_robust_trylock(lock, id)                   \
-  atomic_compare_and_exchange_val_acq (&(lock), id, 0)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index 47e18061e187851d6319beecfd502c139ba1c176..0de3e892c3684b41cc6319a43fd9d7a8aab67cb0 100644 (file)
 #define lll_cond_trylock(lock)                                                 \
   atomic_compare_and_exchange_val_acq(&(lock), 2, 0)
 
-#define __lll_robust_trylock(futex, id)                                        \
-  (atomic_compare_and_exchange_val_acq (futex, id, 0) != 0)
-#define lll_robust_trylock(lock, id)                                           \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index 07467f379033eb46eae2f354a5a87cacbc83f776..f984c08e44d1d760f82130276b9f931e0784349b 100644 (file)
@@ -187,14 +187,6 @@ __lll_cond_trylock(int *futex)
 #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
 
 
-static inline int __attribute__((always_inline))
-__lll_robust_trylock(int *futex, int id)
-{
-  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(lock, id) \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index ab92c3fc8f58beb9007cb29728f3f00554fd5bd1..4af4a8206cba6e05480fb5997f5bcb87c2d0e793 100644 (file)
 # endif
 #endif
 
-/* Set *futex to ID if it is 0, atomically.  Returns the old value */
-#define __lll_robust_trylock(futex, id) \
-  ({ int __val;                                                                      \
-     __asm __volatile ("1:     lwarx   %0,0,%2" MUTEX_HINT_ACQ "\n"          \
-                      "        cmpwi   0,%0,0\n"                             \
-                      "        bne     2f\n"                                 \
-                      "        stwcx.  %3,0,%2\n"                            \
-                      "        bne-    1b\n"                                 \
-                      "2:      " __lll_acq_instr                             \
-                      : "=&r" (__val), "=m" (*futex)                         \
-                      : "r" (futex), "r" (id), "m" (*futex)                  \
-                      : "cr0", "memory");                                    \
-     __val;                                                                  \
-  })
-
-#define lll_robust_trylock(lock, id) __lll_robust_trylock (&(lock), id)
-
 /* Set *futex to 1 if it is 0, atomically.  Returns the old value */
 #define __lll_trylock(futex) __lll_robust_trylock (futex, 1)
 
index cabff30be98a8d8d13fc6aff0f035814d0f7031f..0bc641124c4f2257b7b392fb0de28b5a96cf3300 100644 (file)
@@ -210,21 +210,6 @@ __lll_cond_trylock (int *futex)
 #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex))
 
 
-static inline int
-__attribute__ ((always_inline))
-__lll_robust_trylock (int *futex, int id)
-{
-    unsigned int old;
-
-    __asm __volatile ("cs %0,%3,%1"
-                      : "=d" (old), "=Q" (*futex)
-                      : "0" (0), "d" (id), "m" (*futex) : "cc", "memory" );
-    return old != 0;
-}
-#define lll_robust_trylock(futex, id) \
-  __lll_robust_trylock (&(futex), id)
-
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index 438632d9629c2ca40efe77a7fd7ae244804487f9..fe8374e233b0447670d5c44cd8c046667b83d563 100644 (file)
@@ -118,28 +118,6 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden;
        : "r0", "r1", "r2", "t", "memory"); \
      __result; })
 
-#define lll_robust_trylock(futex, id)  \
-  ({ unsigned char __result; \
-     __asm __volatile ("\
-       .align 2\n\
-       mova 1f,r0\n\
-       nop\n\
-       mov r15,r1\n\
-       mov #-8,r15\n\
-     0: mov.l @%1,r2\n\
-       cmp/eq r2,%3\n\
-       bf 1f\n\
-       mov.l %2,@%1\n\
-     1: mov r1,r15\n\
-       mov #-1,%0\n\
-       negc %0,%0"\
-       : "=r" (__result) \
-       : "r" (&(futex)), \
-         "r" (id), \
-         "r" (LLL_LOCK_INITIALIZER) \
-       : "r0", "r1", "r2", "t", "memory"); \
-     __result; })
-
 #define lll_cond_trylock(futex) \
   ({ unsigned char __result; \
      __asm __volatile ("\
index d4ed7a9bd7e32d4dc5f32742ea903ad8386508a7..015af35d284cee97a8fa2fe0a9578951a2056545 100644 (file)
@@ -203,15 +203,6 @@ __lll_cond_trylock (int *futex)
 }
 #define lll_cond_trylock(futex) __lll_cond_trylock (&(futex))
 
-static inline int
-__attribute__ ((always_inline))
-__lll_robust_trylock (int *futex, int id)
-{
-  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(futex, id) \
-  __lll_robust_trylock (&(futex), id)
-
 
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
index 46149f1cd4e60bcd719b5ee19148b1c14c81c37b..09c1b3d7e7b941b3b0791ef73d48572de98ba835 100644 (file)
@@ -186,14 +186,6 @@ __lll_cond_trylock (int *futex)
 #define lll_cond_trylock(lock) __lll_cond_trylock (&(lock))
 
 
-static inline int __attribute__ ((always_inline))
-__lll_robust_trylock (int *futex, int id)
-{
-  return atomic_compare_and_exchange_val_acq (futex, id, 0) != 0;
-}
-#define lll_robust_trylock(lock, id) \
-  __lll_robust_trylock (&(lock), id)
-
 extern void __lll_lock_wait_private (int *futex) attribute_hidden;
 extern void __lll_lock_wait (int *futex, int private) attribute_hidden;
 extern int __lll_robust_lock_wait (int *futex, int private) attribute_hidden;
index c13ca084dfb2c655b807dbfbfaca89bfba9d4bc4..c93c68e64fbcc1406399613e82815825adc749bb 100644 (file)
                       : "memory");                                           \
      ret; })
 
-#define lll_robust_trylock(futex, id) \
-  ({ int ret;                                                                \
-     __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1"                          \
-                      : "=a" (ret), "=m" (futex)                             \
-                      : "r" (id), "m" (futex), "0" (LLL_LOCK_INITIALIZER)    \
-                      : "memory");                                           \
-     ret; })
-
 #define lll_cond_trylock(futex) \
   ({ int ret;                                                                \
      __asm __volatile (LOCK_INSTR "cmpxchgl %2, %1"                          \
This page took 0.133688 seconds and 5 git commands to generate.