]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Get rid of lll_robust_dead.
authorRoland McGrath <roland@hack.frob.com>
Thu, 10 Jul 2014 18:21:54 +0000 (11:21 -0700)
committerRoland McGrath <roland@hack.frob.com>
Thu, 10 Jul 2014 18:21:54 +0000 (11:21 -0700)
17 files changed:
ChangeLog
nptl/pthread_create.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 0bd02c4d09fe432536b8193e99cf0bc7ba4016b6..a5bc6025a24981cd0e5f4c05be2924f143c2742f 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,24 @@
 2014-07-10  Roland McGrath  <roland@hack.frob.com>
 
+       * nptl/pthread_create.c (start_thread): Use atomic_or and
+       lll_futex_wake directly rather than lll_robust_dead.
+       * sysdeps/unix/sysv/linux/aarch64/lowlevellock.h
+       (lll_robust_dead): Macro 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.
+
        * nptl/pthread_mutex_trylock.c (__pthread_mutex_trylock):
        Use atomic_compare_and_exchange_val_acq directly rather than
        lll_robust_trylock.
index 29971637337b579aee0fbd49bda07e50a06b88c6..b9af01076794cb3daf5e737466bff94b79c32ffc 100644 (file)
@@ -390,7 +390,8 @@ start_thread (void *arg)
 # endif
          this->__list.__next = NULL;
 
-         lll_robust_dead (this->__lock, /* XYZ */ LLL_SHARED);
+         atomic_or (&this->__lock, FUTEX_OWNER_DIED);
+         lll_futex_wake (this->__lock, 1, /* XYZ */ LLL_SHARED);
        }
       while (robust != (void *) &pd->robust_head);
     }
index 0e61f18bf91b855852056fa533403915aa06f7e8..2acebd4201253153486390a50f9ddcb963abd85a 100644 (file)
     __ret;                                                                   \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 584094f780d9d24586f6450240878ec387a34ac2..bd727621adc04d6c94a8d71fcbf427f51ea90c34 100644 (file)
     INTERNAL_SYSCALL_ERROR_P (__ret, __err)? -__ret : __ret;                 \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 58699718a170207d71e536ba07edcaa6e28f4f76..3199d0a5d6983d1bd7168295383f73cca004af0e 100644 (file)
     __ret;                                                                   \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 426984f08fd3a703aeffa13757dc0add2fde5a1f..fb61d0c6d053e805de6d9f5ceede530ba0c56a40 100644 (file)
@@ -144,15 +144,6 @@ typedef int lll_lock_t;
     __ret;                                                                   \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_wake_unlock(futexp, nr_wake, nr_wake2, futexp2, private) \
   ({                                                                      \
index 02ec8f7e7e09c93b1e21ce2ccaad1286917e61c6..9d9ae587ed1c9986a3f6ec44442c263451521647 100644 (file)
@@ -377,21 +377,6 @@ extern int __lll_timedlock_elision (int *futex, short *adapt_count,
     })
 
 
-#define lll_robust_dead(futex, private) \
-  (void)                                                                     \
-    ({ int __ignore;                                                         \
-       register int _nr asm ("edx") = 1;                                     \
-       __asm __volatile (LOCK_INSTR "orl %5, (%2)\n\t"                       \
-                        LLL_EBX_LOAD                                         \
-                        LLL_ENTER_KERNEL                                     \
-                        LLL_EBX_LOAD                                         \
-                        : "=a" (__ignore)                                    \
-                        : "0" (SYS_futex), LLL_EBX_REG (&(futex)),           \
-                          "c" (__lll_private_flag (FUTEX_WAKE, private)),    \
-                          "d" (_nr), "i" (FUTEX_OWNER_DIED),                 \
-                          "i" (offsetof (tcbhead_t, sysinfo)));              \
-    })
-
 #define lll_islocked(futex) \
   (futex != LLL_LOCK_INITIALIZER)
 
index 845a1533d1633d5b39c934ba43ffdb6ae25e4289..e84f5308344cd0716afb210e5b7650041dd49763 100644 (file)
    _r10 == -1 ? -_retval : _retval;                                    \
 })
 
-#define lll_robust_dead(futexv, private)                               \
-do                                                                     \
-  {                                                                    \
-    int *__futexp = &(futexv);                                         \
-    atomic_or (__futexp, FUTEX_OWNER_DIED);                            \
-    DO_INLINE_SYSCALL(futex, 3, (long) __futexp,                       \
-                     __lll_private_flag (FUTEX_WAKE, private), 1);     \
-  }                                                                    \
-while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val, private)       \
 ({                                                                          \
index 5ab52187217422e158fb460bbad1982564cbe92f..3b40449ac045ca6e6d9dd248cac97c2230c2336f 100644 (file)
     __ret;                                                                   \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 0de3e892c3684b41cc6319a43fd9d7a8aab67cb0..0ba63a1e87d724fba76c926941230db98c429525 100644 (file)
     __ret;                                                                     \
   })
 
-#define lll_robust_dead(futexv, private)                                       \
-  do                                                                           \
-    {                                                                          \
-      int *__futexp = &(futexv);                                               \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                  \
-      lll_futex_wake (__futexp, 1, private);                                   \
-    }                                                                          \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private)       \
   ({                                                                           \
index f984c08e44d1d760f82130276b9f931e0784349b..9ed6338ae66b3879d1fd1543f97d871d5f9572cc 100644 (file)
     INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 4af4a8206cba6e05480fb5997f5bcb87c2d0e793..d7e1e38cc6fc24890b64043fe0372b8084f2a3e2 100644 (file)
     INTERNAL_SYSCALL_ERROR_P (__ret, __err) ? -__ret : __ret;                \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      INTERNAL_SYSCALL_DECL (__err);                                         \
-      int *__futexp = &(futexv);                                             \
-                                                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      INTERNAL_SYSCALL (futex, __err, 4, __futexp,                           \
-                       __lll_private_flag (FUTEX_WAKE, private), 1, 0);      \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index 0bc641124c4f2257b7b392fb0de28b5a96cf3300..eaf2d58ee9d3133bef34c3dab8e82d34c6079bb9 100644 (file)
                              (nr), 0);                                       \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-                                                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
index fe8374e233b0447670d5c44cd8c046667b83d563..10a2c252459ab95039be854ac8d41813ff244711 100644 (file)
@@ -301,21 +301,6 @@ extern int __lll_unlock_wake (int *__futex, int private) attribute_hidden;
            if (__result) \
              __lll_unlock_wake (__futex, private); })
 
-#define lll_robust_dead(futex, private)                       \
-  (void) ({ int __ignore, *__futex = &(futex); \
-           __asm __volatile ("\
-               .align 2\n\
-               mova 1f,r0\n\
-               mov r15,r1\n\
-               mov #-6,r15\n\
-            0: mov.l @%1,%0\n\
-               or %2,%0\n\
-               mov.l %0,@%1\n\
-            1: mov r1,r15"\
-               : "=&r" (__ignore) : "r" (__futex), "r" (FUTEX_OWNER_DIED) \
-               : "r0", "r1", "memory");        \
-           lll_futex_wake (__futex, 1, private); })
-
 # ifdef NEED_SYSCALL_INST_PAD
 #  define SYSCALL_WITH_INST_PAD "\
        trapa #0x14; or r0,r0; or r0,r0; or r0,r0; or r0,r0; or r0,r0"
index 015af35d284cee97a8fa2fe0a9578951a2056545..d764075fdb424476f93f088f273d2cd331bb6746 100644 (file)
@@ -132,15 +132,6 @@ extern void __cpu_relax (void);
     INTERNAL_SYSCALL_ERROR_P (__ret, __err);                                 \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #ifdef __sparc32_atomic_do_lock
 /* Avoid FUTEX_WAKE_OP if supporting pre-v9 CPUs.  */
index 09c1b3d7e7b941b3b0791ef73d48572de98ba835..e3e52a48f0f6bed664a58cea95af8b5a9363ab70 100644 (file)
                              (nr), 0);                                       \
   })
 
-#define lll_robust_dead(futexv, private) \
-  do                                                                         \
-    {                                                                        \
-      int *__futexp = &(futexv);                                             \
-      atomic_or (__futexp, FUTEX_OWNER_DIED);                                \
-      lll_futex_wake (__futexp, 1, private);                                 \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(futexp, nr_wake, nr_move, mutex, val, private) \
   ({                                                                         \
index c93c68e64fbcc1406399613e82815825adc749bb..55b4e16144bd16fb203d5a6569f1ffbe7a0e0be8 100644 (file)
@@ -378,20 +378,6 @@ extern int __lll_timedlock_elision (int *futex, short *adapt_count,
     }                                                                        \
   while (0)
 
-#define lll_robust_dead(futex, private) \
-  do                                                                         \
-    {                                                                        \
-      int ignore;                                                            \
-      __asm __volatile (LOCK_INSTR "orl %3, (%2)\n\t"                        \
-                       "syscall"                                             \
-                       : "=m" (futex), "=a" (ignore)                         \
-                       : "D" (&(futex)), "i" (FUTEX_OWNER_DIED),             \
-                         "S" (__lll_private_flag (FUTEX_WAKE, private)),     \
-                         "1" (__NR_futex), "d" (1)                           \
-                       : "cx", "r11", "cc", "memory");                       \
-    }                                                                        \
-  while (0)
-
 /* Returns non-zero if error happened, zero if success.  */
 #define lll_futex_requeue(ftx, nr_wake, nr_move, mutex, val, private) \
   ({ int __res;                                                                      \