This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH] PowerPC: Define __PTHREAD_MUTEX_HAVE_ELISION to 0
- From: Adhemerval Zanella <azanella at linux dot vnet dot ibm dot com>
- To: Siddhesh Poyarekar <siddhesh at redhat dot com>
- Cc: Andreas Schwab <schwab at suse dot de>, libc-alpha at sourceware dot org
- Date: Tue, 25 Mar 2014 13:44:07 -0300
- Subject: Re: [PATCH] PowerPC: Define __PTHREAD_MUTEX_HAVE_ELISION to 0
- Authentication-results: sourceware.org; auth=none
- References: <532C872D dot 8030107 at linux dot vnet dot ibm dot com> <53318BC9 dot 40404 at linux dot vnet dot ibm dot com> <mvmwqfil26w dot fsf at hawking dot suse dot de> <5331A8BF dot 3050401 at linux dot vnet dot ibm dot com> <20140325162204 dot GH1850 at spoyarek dot pnq dot redhat dot com>
On 25-03-2014 13:22, Siddhesh Poyarekar wrote:
> On Tue, Mar 25, 2014 at 01:03:11PM -0300, Adhemerval Zanella wrote:
>> I agree with you, but the patch to check if it is defined in nptl/sysdeps/pthread/pthread.h
>> was rejected: https://sourceware.org/ml/libc-alpha/2014-03/msg00494.html. So I just folowed
>> the way x86_64 and s390 does. If this was just an warning I'd rework it to make it more general,
>> as Roland as suggested in https://sourceware.org/ml/libc-alpha/2014-03/msg00501.html; but it is
>> breaking 'make check' build. So my preference now is let it as and focus on a proper fix, if
>> any, after.
> Perhaps it would be acceptable to define __PTHREAD_MUTEX_HAVE_ELISION
> unconditionally in pthread.h and then redefine it in x86_64 and s390
> like so:
>
> diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
> index 1e0c5dc..524b8c4 100644
> --- a/nptl/sysdeps/pthread/pthread.h
> +++ b/nptl/sysdeps/pthread/pthread.h
> @@ -23,6 +23,8 @@
> #include <sched.h>
> #include <time.h>
>
> +#define __PTHREAD_MUTEX_HAVE_ELISION 0
> +
> #include <bits/pthreadtypes.h>
> #include <bits/setjmp.h>
> #include <bits/wordsize.h>
> diff --git a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
> index 28e5144..8548d9d 100644
> --- a/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
> +++ b/nptl/sysdeps/unix/sysv/linux/x86/bits/pthreadtypes.h
> @@ -84,6 +84,7 @@ typedef struct __pthread_internal_slist
> } __pthread_slist_t;
> #endif
>
> +#undef __PTHREAD_MUTEX_HAVE_ELISION
>
> /* Data structures for mutex handling. The structure of the attribute
> type is not exposed on purpose. */
>
>
> or alternatively, define __PTHREAD_MUTEX_HAVE_ELISION to 0 if it is
> not yet defined, which is a variant of Will's original fix:
>
> diff --git a/nptl/sysdeps/pthread/pthread.h b/nptl/sysdeps/pthread/pthread.h
> index 1e0c5dc..deeea0d 100644
> --- a/nptl/sysdeps/pthread/pthread.h
> +++ b/nptl/sysdeps/pthread/pthread.h
> @@ -27,6 +27,9 @@
> #include <bits/setjmp.h>
> #include <bits/wordsize.h>
>
> +#ifndef __PTHREAD_MUTEX_HAVE_ELISION
> +# define __PTHREAD_MUTEX_HAVE_ELISION 0
> +#endif
>
> /* Detach state. */
> enum
>
> Both approaches ensure that the macro is always defined and hence look
> typo-proof to me.
>
> Siddhesh
I would prefer this approach instead of create/install another header.