mirror of
https://sourceware.org/git/glibc.git
synced 2025-01-10 19:30:10 +00:00
nptl: Define __PTHREAD_MUTEX_{NUSERS_AFTER_KIND,USE_UNION}
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>
This commit is contained in:
parent
72b3c6eecd
commit
06be6368da
67
ChangeLog
67
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
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
||||
|
@ -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;
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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)))
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -42,6 +42,25 @@
|
||||
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
|
||||
};
|
||||
|
@ -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;
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -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
|
||||
|
@ -51,6 +51,13 @@
|
||||
#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
|
||||
|
Loading…
Reference in New Issue
Block a user