This is the mail archive of the libc-alpha@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

Re: [PATCH] Remove __PTHREAD_MUTEX_HAVE_ELISION undefined warning


Thanks for checking it. I'm pinging again because without this patch or similar hack
(define __PTHREAD_MUTEX_HAVE_ELISION somewhere) 'make check' *fails* while
building nptl tests on platform that does not define __PTHREAD_MUTEX_HAVE_ELISION.

On 04-04-2014 10:09, Stefan Liebler wrote:
> 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.  */
>>>
>>
>>
>
>


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]