]> sourceware.org Git - glibc.git/commitdiff
nptl: Define __PTHREAD_MUTEX_{NUSERS_AFTER_KIND,USE_UNION}
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>
Thu, 19 Oct 2017 12:11:57 +0000 (10:11 -0200)
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>
Tue, 7 Nov 2017 11:48:41 +0000 (09:48 -0200)
This patch adds two new internal defines to set the internal
pthread_mutex_t layout required by the supported ABIS:

  1. __PTHREAD_MUTEX_NUSERS_AFTER_KIND which control whether to define
     __nusers fields before or after __kind.  The preferred value for
     is 0 for new ports and it sets __nusers before __kind.

  2. __PTHREAD_MUTEX_USE_UNION which control whether internal __spins and
     __list members will be place inside an union for linuxthreads
     compatibility.  The preferred value is 0 for ports and it sets
     to not use an union to define both fields.

It fixes the wrong offsets value for __kind value on x86_64-linux-gnu-x32.
Checked with a make check run-built-tests=no on all afected ABIs.

[BZ #22298]
* nptl/allocatestack.c (allocate_stack): Check if
__PTHREAD_MUTEX_HAVE_PREV is non-zero, instead if
__PTHREAD_MUTEX_HAVE_PREV is defined.
* nptl/descr.h (pthread): Likewise.
* nptl/nptl-init.c (__pthread_initialize_minimal_internal):
Likewise.
* nptl/pthread_create.c (START_THREAD_DEFN): Likewise.
* sysdeps/nptl/fork.c (__libc_fork): Likewise.
* sysdeps/nptl/pthread.h (PTHREAD_MUTEX_INITIALIZER): Likewise.
* sysdeps/nptl/bits/thread-shared-types.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
defines.
(__pthread_internal_list): Check __PTHREAD_MUTEX_USE_UNION instead
of __WORDSIZE for internal layout.
(__pthread_mutex_s): Check __PTHREAD_MUTEX_NUSERS_AFTER_KIND instead
of __WORDSIZE for internal __nusers layout and __PTHREAD_MUTEX_USE_UNION
instead of __WORDSIZE whether to use an union for __spins and __list
fields.
(__PTHREAD_MUTEX_HAVE_PREV): Define also for __PTHREAD_MUTEX_USE_UNION
case.
* sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
defines.
* sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/arm/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/mips/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/s390/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/sh/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/tile/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.
* sysdeps/x86/nptl/bits/pthreadtypes-arch.h
(__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
Likewise.

Signed-off-by: Adhemerval Zanella <adhemerval.zanella@linaro.org>
23 files changed:
ChangeLog
nptl/allocatestack.c
nptl/descr.h
nptl/nptl-init.c
nptl/pthread_create.c
sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h
sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
sysdeps/arm/nptl/bits/pthreadtypes-arch.h
sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
sysdeps/mips/nptl/bits/pthreadtypes-arch.h
sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
sysdeps/nptl/bits/thread-shared-types.h
sysdeps/nptl/fork.c
sysdeps/nptl/pthread.h
sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
sysdeps/s390/nptl/bits/pthreadtypes-arch.h
sysdeps/sh/nptl/bits/pthreadtypes-arch.h
sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
sysdeps/tile/nptl/bits/pthreadtypes-arch.h
sysdeps/x86/nptl/bits/pthreadtypes-arch.h

index d5cc4303daeb3021938303298a68730d4d83aac1..5d3260b727e8060e5b10c76ade57a8434adcb475 100644 (file)
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,72 @@
 2017-11-07  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+       [BZ #22298]
+       * nptl/allocatestack.c (allocate_stack): Check if
+       __PTHREAD_MUTEX_HAVE_PREV is non-zero, instead if
+       __PTHREAD_MUTEX_HAVE_PREV is defined.
+       * nptl/descr.h (pthread): Likewise.
+       * nptl/nptl-init.c (__pthread_initialize_minimal_internal):
+       Likewise.
+       * nptl/pthread_create.c (START_THREAD_DEFN): Likewise.
+       * sysdeps/nptl/fork.c (__libc_fork): Likewise.
+       * sysdeps/nptl/pthread.h (PTHREAD_MUTEX_INITIALIZER): Likewise.
+       * sysdeps/nptl/bits/thread-shared-types.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
+       defines.
+       (__pthread_internal_list): Check __PTHREAD_MUTEX_USE_UNION instead
+       of __WORDSIZE for internal layout.
+       (__pthread_mutex_s): Check __PTHREAD_MUTEX_NUSERS_AFTER_KIND instead
+       of __WORDSIZE for internal __nusers layout and __PTHREAD_MUTEX_USE_UNION
+       instead of __WORDSIZE whether to use an union for __spins and __list
+       fields.
+       (__PTHREAD_MUTEX_HAVE_PREV): Define also for __PTHREAD_MUTEX_USE_UNION
+       case.
+       * sysdeps/aarch64/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
+       defines.
+       * sysdeps/alpha/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/arm/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/mips/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/s390/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/sh/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/tile/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+       * sysdeps/x86/nptl/bits/pthreadtypes-arch.h
+       (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION):
+       Likewise.
+
        * nptl/pthreadP.h (ASSERT_TYPE_SIZE, ASSERT_PTHREAD_INTERNAL_SIZE):
        New macros.
        * nptl/pthread_attr_init.c (__pthread_mutex_init): Add build time
index ad9add8d2a7b10d6d1d9cc750c71ce6b42b61a57..1cc789319564b468cf07bdb1304b27dc5a91e86f 100644 (file)
@@ -753,7 +753,7 @@ allocate_stack (const struct pthread_attr *attr, struct pthread **pdp,
                                  - offsetof (pthread_mutex_t,
                                              __data.__list.__next));
   pd->robust_head.list_op_pending = NULL;
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
+#if __PTHREAD_MUTEX_HAVE_PREV
   pd->robust_prev = &pd->robust_head;
 #endif
   pd->robust_head.list = &pd->robust_head;
index c5ad0c8dba935fbd2b58cc29268efb1f864affd3..c83b17b674b07e5b4e2cbaecf984f6d1673187b5 100644 (file)
@@ -169,7 +169,7 @@ struct pthread
   pid_t pid_ununsed;
 
   /* List of robust mutexes the thread is holding.  */
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
+#if __PTHREAD_MUTEX_HAVE_PREV
   void *robust_prev;
   struct robust_list_head robust_head;
 
index 29216077a2cf7ffb334589ceb4d061835070a6c0..869e926f17aa218ab0b122eeda935069ef419ae5 100644 (file)
@@ -297,7 +297,7 @@ __pthread_initialize_minimal_internal (void)
 
   /* Initialize the robust mutex data.  */
   {
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
+#if __PTHREAD_MUTEX_HAVE_PREV
     pd->robust_prev = &pd->robust_head;
 #endif
     pd->robust_head.list = &pd->robust_head;
index 992331e280cfb86c7d592ff75777b8eec2508368..51ae60dfca58e0ee925bb02c660a7e09c5f7d508 100644 (file)
@@ -518,7 +518,7 @@ START_THREAD_DEFN
 
 #ifndef __ASSUME_SET_ROBUST_LIST
   /* If this thread has any robust mutexes locked, handle them now.  */
-# ifdef __PTHREAD_MUTEX_HAVE_PREV
+# if __PTHREAD_MUTEX_HAVE_PREV
   void *robust = pd->robust_head.list;
 # else
   __pthread_slist_t *robust = pd->robust_list.__next;
@@ -536,7 +536,7 @@ START_THREAD_DEFN
                                         __list.__next));
          robust = *((void **) robust);
 
-# ifdef __PTHREAD_MUTEX_HAVE_PREV
+# if __PTHREAD_MUTEX_HAVE_PREV
          this->__list.__prev = NULL;
 # endif
          this->__list.__next = NULL;
index d13a75db07affc45e52e599c25bd6dae8ff988f7..9ab23d047415d0cc4a2fec67224635a47511a007 100644 (file)
@@ -45,6 +45,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION   0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  0
+#define __PTHREAD_MUTEX_USE_UNION          0
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index b6f6cb134711af653572f33a7c34ba694001f9b4..429df10c0cc92c97741d111b9a0e52418e2b09fe 100644 (file)
@@ -33,6 +33,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  0
+#define __PTHREAD_MUTEX_USE_UNION          0
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 3f9eca4645e3b300a18433dfb2a6ab898068b0d7..3911c8183d424c7ac239b7e0cc42d8f84f14aee6 100644 (file)
@@ -34,6 +34,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index c1585625d1a78b8cb80dc17a16d5f560a6f7679f..865a14ee4a8526d376de86c0361038759f274d8f 100644 (file)
@@ -48,6 +48,8 @@
    pthread_mutex_t is larger than Linuxthreads.  */
 #define __PTHREAD_COMPAT_PADDING_END  int __reserved[2];
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT __attribute__ ((__aligned__(16)))
 #define __ONCE_ALIGNMENT
index 631cb33d09fae685cebfd8528aef8bdccfa5da95..2a3bc75b20eeb82acadc4d5af8021e199e9b7c26 100644 (file)
@@ -33,6 +33,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  0
+#define __PTHREAD_MUTEX_USE_UNION          0
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 845b9e6c2b0130668c3bd84dcaa3433808d082b3..966cc7569f6d917ec34afcd9d7dcfe1b68d6eb0b 100644 (file)
@@ -35,6 +35,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT __attribute__ ((__aligned__ (4)))
 #define __ONCE_ALIGNMENT __attribute__ ((__aligned__ (4)))
index d687e2c07640702018cbab5f48896492c5e112e6..e44f2dcb6afb0ba6067136134c757c091dc9951e 100644 (file)
@@ -35,6 +35,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 6aa1bda172a97b6f4e2b8642c525d0de8f4d1d57..f03389acc6d2ad99db1fa9051f0efa3e364fcc47 100644 (file)
@@ -42,6 +42,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  (_MIPS_SIM != _ABI64)
+#define __PTHREAD_MUTEX_USE_UNION          (_MIPS_SIM != _ABI64)
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index e2732f977185dc18dcf9dfdb05897078c404bf61..83f86846042ea48e89fbe0c56f999c5af8cff4c2 100644 (file)
@@ -35,6 +35,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 68b82b6bd6ba6a21df18f93865b7b8f514e2bacb..da4358a9653453348d200831ac2bc5c86b7202fd 100644 (file)
                                    the internal structure.
    __PTHREAD_MUTEX_LOCK_ELISION   - 1 if the architecture supports lock
                                    elision or 0 otherwise.
+   __PTHREAD_MUTEX_NUSERS_AFTER_KIND - control where to put __nusers.  The
+                                      preferred value for new architectures
+                                      is 0.
+   __PTHREAD_MUTEX_USE_UNION      - control whether internal __spins and
+                                   __list will be place inside a union for
+                                   linuxthreads compatibility.
+                                   The preferred value for new architectures
+                                   is 0.
+
+   For a new port the preferred values for the required defines are:
+
+   #define __PTHREAD_COMPAT_PADDING_MID
+   #define __PTHREAD_COMPAT_PADDING_END
+   #define __PTHREAD_MUTEX_LOCK_ELISION         0
+   #define __PTHREAD_MUTEX_NUSERS_AFTER_KIND    0
+   #define __PTHREAD_MUTEX_USE_UNION            0
+
+   __PTHREAD_MUTEX_LOCK_ELISION can be set to 1 if the hardware plans to
+   eventually support lock elision using transactional memory.
 
    The additional macro defines any constraint for the lock alignment
    inside the thread structures:
@@ -59,7 +78,7 @@
 
 /* Common definition of pthread_mutex_t. */
 
-#if __WORDSIZE == 64
+#if !__PTHREAD_MUTEX_USE_UNION
 typedef struct __pthread_internal_list
 {
   struct __pthread_internal_list *__prev;
@@ -74,7 +93,7 @@ typedef struct __pthread_internal_slist
 
 /* Lock elision support.  */
 #if __PTHREAD_MUTEX_LOCK_ELISION
-# if __WORDSIZE == 64
+# if !__PTHREAD_MUTEX_USE_UNION
 #  define __PTHREAD_SPINS_DATA \
   short __spins;               \
   short __elision
@@ -101,24 +120,27 @@ struct __pthread_mutex_s
   int __lock __LOCK_ALIGNMENT;
   unsigned int __count;
   int __owner;
-#if __WORDSIZE == 64
+#if !__PTHREAD_MUTEX_NUSERS_AFTER_KIND
   unsigned int __nusers;
 #endif
   /* KIND must stay at this position in the structure to maintain
      binary compatibility with static initializers.  */
   int __kind;
   __PTHREAD_COMPAT_PADDING_MID
-#if __WORDSIZE == 64
+#if __PTHREAD_MUTEX_NUSERS_AFTER_KIND
+  unsigned int __nusers;
+#endif
+#if !__PTHREAD_MUTEX_USE_UNION
   __PTHREAD_SPINS_DATA;
   __pthread_list_t __list;
 # define __PTHREAD_MUTEX_HAVE_PREV      1
 #else
-  unsigned int __nusers;
   __extension__ union
   {
     __PTHREAD_SPINS_DATA;
     __pthread_slist_t __list;
   };
+# define __PTHREAD_MUTEX_HAVE_PREV      0
 #endif
   __PTHREAD_COMPAT_PADDING_END
 };
index 4bb87e233118586f5d277c16fc67806a5255ab1a..48676c2f481c56511510a9567ed06c5b3665df73 100644 (file)
@@ -166,7 +166,7 @@ __libc_fork (void)
         inherit the correct value from the parent.  We do not need to clear
         the pending operation because it must have been zero when fork was
         called.  */
-# ifdef __PTHREAD_MUTEX_HAVE_PREV
+# if __PTHREAD_MUTEX_HAVE_PREV
       self->robust_prev = &self->robust_head;
 # endif
       self->robust_head.list = &self->robust_head;
index 632ea7bc361b0ffd7b03cfff4677df5875fccb44..2b2b386ab344fdb5c389d81b506ca82b248a5b08 100644 (file)
@@ -83,7 +83,7 @@ enum
 #endif
 
 
-#ifdef __PTHREAD_MUTEX_HAVE_PREV
+#if __PTHREAD_MUTEX_HAVE_PREV
 # define PTHREAD_MUTEX_INITIALIZER \
   { { 0, 0, 0, 0, 0, __PTHREAD_SPINS, { 0, 0 } } }
 # ifdef __USE_GNU
index f29119b7941dff888288996b42c1345af2a506af..8158cb5abdbe880efe5c8636850b0eaf0a1c5d1d 100644 (file)
@@ -42,6 +42,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    1
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  (__WORDSIZE != 64)
+#define __PTHREAD_MUTEX_USE_UNION          (__WORDSIZE != 64)
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 3a9ac576250b2aeeea560bf3023f36718e47954a..1ae277367d05a014360dc41f97ff9e4c5d5dcfba 100644 (file)
@@ -45,6 +45,8 @@
 #else
 #define __PTHREAD_MUTEX_LOCK_ELISION   0
 #endif
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  (__WORDSIZE != 64)
+#define __PTHREAD_MUTEX_USE_UNION          (__WORDSIZE != 64)
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index b2615fe314ab3385f77e29531cca77b23d106ca8..e707751aa61746452664cfdb0e818b0f83338654 100644 (file)
@@ -34,6 +34,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+#define __PTHREAD_MUTEX_USE_UNION          1
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 1e188cf91f1be775ab1bf7782fb0318a6d0b5053..0f96f3711e90a8ad806e67b31041b82b45f33eb8 100644 (file)
@@ -43,6 +43,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  (__WORDSIZE != 64)
+#define __PTHREAD_MUTEX_USE_UNION          (__WORDSIZE != 64)
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index 145ee42ddbf1d0518e5af2428d55022ea1982566..054474f770be51e42d151aa6277afc241b9bbc73 100644 (file)
@@ -43,6 +43,8 @@
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    0
+#define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  (__WORDSIZE != 64)
+#define __PTHREAD_MUTEX_USE_UNION          (__WORDSIZE != 64)
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
index fd86806800a009465d608c0a658a02bf79df5a02..74d5f6d6e8fa4383c8d0eeaa71e56e0a95f34028 100644 (file)
 #define __PTHREAD_COMPAT_PADDING_MID
 #define __PTHREAD_COMPAT_PADDING_END
 #define __PTHREAD_MUTEX_LOCK_ELISION    1
+#ifdef __x86_64__
+# define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  0
+# define __PTHREAD_MUTEX_USE_UNION          0
+#else
+# define __PTHREAD_MUTEX_NUSERS_AFTER_KIND  1
+# define __PTHREAD_MUTEX_USE_UNION          1
+#endif
 
 #define __LOCK_ALIGNMENT
 #define __ONCE_ALIGNMENT
This page took 0.100332 seconds and 5 git commands to generate.