[PATCH] Remove __PTHREAD_MUTEX_HAVE_ELISION undefined warning
Stefan Liebler
stli@linux.vnet.ibm.com
Fri Apr 4 13:10:00 GMT 2014
Hi,
this is okay on s390. I have tested the patch with s390/s390x.
Thanks.
On 04/02/2014 02:35 PM, Adhemerval Zanella wrote:
> Ping for arch maintainers.
>
> On 26-03-2014 17:29, Adhemerval Zanella wrote:
>> On 26-03-2014 14:50, Roland McGrath wrote:
>>> I don't understand what "support for 64 bits" or "support for 32 bits"
>>> means. OK, I've looked at bits/pthreadtypes.h so I do understand. But it
>>> seems pretty wrong to pretend this is a generic 32/64 sort of thing when it
>>> is really just about the x86-private layout of pthread_mutex_t. It seems
>>> more proper to have bits/pthreadtypes.h just define __PTHREAD_SPINS.
>>>
>>> That can be a separate cleanup if you want, and others may want to kibitz.
>>> But that might involve dropping the header you're adding here, so maybe you
>>> want to just resolve it now.
>>>
>>> If you want to go ahead with this change, then it's OK with the other nits
>>> above and this comment rewritten to describe concretely what the macro
>>> means. In actual usage so far, it doesn't actually mean anything about
>>> elision support per se. It just means something about how the fields of
>>> pthread_mutex_t are structured and hence what the initializer must look like.
>>> If that's all it's for, it should be made clear.
>>>
>> Cleanup up the whole __PTHREAD_SPINS seems the appropriated measure. This patch
>> moves the __PTHREAD_SPINS definition to arch specific header since pthread_mutex_t
>> layout is also arch specific and does not make sense disassociate them.
>> This makes the definition of __PTHREAD_MUTEX_HAVE_ELISION not required.
>>
>> --
>>
>> * nptl/sysdeps/pthread/pthread.h (__PTHREAD_MUTEX_HAVE_ELISION):
>> Remove macro usage.
>> (__PTHREAD_SPINS): Move definition to ...
>> * nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
>> (__PTHREAD_SPINS): ... here.
>> * nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/mips/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>> * sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Likewise.
>>
>> ports/ChangeLog.hppa
>> * ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
>> (__PTHREAD_SPIN): Moved defintion from pthread.h.
>>
>> ---
>>
>> diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
>> index 1e0c5dc..40a3e21 100644
>> --- a/nptl/sysdeps/pthread/pthread.h
>> +++ b/nptl/sysdeps/pthread/pthread.h
>> @@ -82,15 +82,6 @@ enum
>> #endif
>>
>>
>> -/* Mutex initializers. */
>> -#if __PTHREAD_MUTEX_HAVE_ELISION == 1 /* 64bit layout. */
>> -#define __PTHREAD_SPINS 0, 0
>> -#elif __PTHREAD_MUTEX_HAVE_ELISION == 2 /* 32bit layout. */
>> -#define __PTHREAD_SPINS { 0, 0 }
>> -#else
>> -#define __PTHREAD_SPINS 0
>> -#endif
>> -
>> #ifdef __PTHREAD_MUTEX_HAVE_PREV
>> # define PTHREAD_MUTEX_INITIALIZER \
>> { { 0, 0, 0, 0, 0, __PTHREAD_SPINS, { 0, 0 } } }
>> diff --git a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
>> index 71bd3ae..20e5fc0 100644
>> --- a/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
>> +++ b/nptl/sysdeps/unix/sysv/linux/powerpc/bits/pthreadtypes.h
>> @@ -106,6 +106,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
>> index 23a1698..716f151 100644
>> --- a/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
>> +++ b/nptl/sysdeps/unix/sysv/linux/s390/bits/pthreadtypes.h
>> @@ -20,8 +20,6 @@
>>
>> #include <bits/wordsize.h>
>>
>> -# define __PTHREAD_MUTEX_HAVE_ELISION 0
>> -
>> #if __WORDSIZE == 64
>> # define __SIZEOF_PTHREAD_ATTR_T 56
>> # define __SIZEOF_PTHREAD_MUTEX_T 40
>> @@ -107,6 +105,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
>> index e42d94e..f92958c 100644
>> --- a/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
>> +++ b/nptl/sysdeps/unix/sysv/linux/sh/bits/pthreadtypes.h
>> @@ -77,6 +77,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
>> index be615b6..7b9edf2 100644
>> --- a/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
>> +++ b/nptl/sysdeps/unix/sysv/linux/sparc/bits/pthreadtypes.h
>> @@ -106,6 +106,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
>> index 28e5144..0ca10f2 100644
>> --- a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
>> +++ b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
>> @@ -105,7 +105,8 @@ typedef union
>> short __elision;
>> __pthread_list_t __list;
>> # define __PTHREAD_MUTEX_HAVE_PREV 1
>> -# define __PTHREAD_MUTEX_HAVE_ELISION 1
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +# define __PTHREAD_SPINS 0, 0
>> #else
>> unsigned int __nusers;
>> __extension__ union
>> @@ -116,7 +117,7 @@ typedef union
>> short __elision;
>> # define __spins d.__espins
>> # define __elision d.__elision
>> -# define __PTHREAD_MUTEX_HAVE_ELISION 2
>> +# define __PTHREAD_SPINS { 0, 0 }
>> } d;
>> __pthread_slist_t __list;
>> };
>> diff --git a/ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h b/ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
>> index deec4da..621895b 100644
>> --- a/ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
>> +++ b/ports/sysdeps/unix/sysv/linux/hppa/nptl/bits/pthreadtypes.h
>> @@ -94,6 +94,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h
>> index f11eeab..76b94b4 100644
>> --- a/sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/aarch64/nptl/bits/pthreadtypes.h
>> @@ -74,6 +74,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h
>> index 6f85eae..c633c6d 100644
>> --- a/sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/alpha/nptl/bits/pthreadtypes.h
>> @@ -73,6 +73,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
>> index 26edce5..0a0af56 100644
>> --- a/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/arm/nptl/bits/pthreadtypes.h
>> @@ -77,6 +77,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h
>> index b77b80a..49969bb 100644
>> --- a/sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/ia64/nptl/bits/pthreadtypes.h
>> @@ -74,6 +74,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
>> index 283f240..b21f5f8 100644
>> --- a/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/m68k/nptl/bits/pthreadtypes.h
>> @@ -77,6 +77,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
>> index ca053e3..d4c5600 100644
>> --- a/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/microblaze/nptl/bits/pthreadtypes.h
>> @@ -76,6 +76,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/mips/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/mips/nptl/bits/pthreadtypes.h
>> index 9d9386b..712076c 100644
>> --- a/sysdeps/unix/sysv/linux/mips/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/mips/nptl/bits/pthreadtypes.h
>> @@ -106,6 +106,9 @@ typedef union
>> long int __align;
>> } pthread_mutex_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>> typedef union
>> {
>> char __size[__SIZEOF_PTHREAD_MUTEXATTR_T];
>> diff --git a/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h b/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h
>> index f469352..17bb112 100644
>> --- a/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h
>> +++ b/sysdeps/unix/sysv/linux/tile/nptl/bits/pthreadtypes.h
>> @@ -112,6 +112,9 @@ typedef union
>> int __align;
>> } pthread_mutexattr_t;
>>
>> +/* Mutex __spins initilizer used by PTHREAD_MUTEX_INITIALIZER. */
>> +#define __PTHREAD_SPINS 0
>> +
>>
>> /* Data structure for conditional variable handling. The structure of
>> the attribute type is not exposed on purpose. */
>>
>
>
More information about the Libc-alpha
mailing list