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


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]