This is the mail archive of the
libc-alpha@sourceware.org
mailing list for the glibc project.
Re: [PATCH v2 3/3] nptl: Define __PTHREAD_MUTEX_{NUSERS_AFTER_KIND,USE_UNION}
- From: "H.J. Lu" <hjl dot tools at gmail dot com>
- To: Adhemerval Zanella <adhemerval dot zanella at linaro dot org>
- Cc: GNU C Library <libc-alpha at sourceware dot org>
- Date: Mon, 6 Nov 2017 06:18:56 -0800
- Subject: Re: [PATCH v2 3/3] nptl: Define __PTHREAD_MUTEX_{NUSERS_AFTER_KIND,USE_UNION}
- Authentication-results: sourceware.org; auth=none
- References: <1509038067-18532-1-git-send-email-adhemerval.zanella@linaro.org> <1509038067-18532-3-git-send-email-adhemerval.zanella@linaro.org> <995877ea-7a13-39af-3682-6394c6e956d9@linaro.org> <CAMe9rOp7P_jeCwnLthrvqOeJPsZOiRXe+XtqMJmwRs2GX1TpoA@mail.gmail.com>
On Fri, Nov 3, 2017 at 8:25 AM, H.J. Lu <hjl.tools@gmail.com> wrote:
> On Thu, Nov 2, 2017 at 5:14 AM, Adhemerval Zanella
> <adhemerval.zanella@linaro.org> wrote:
>> Ping.
>>
>> On 26/10/2017 15:14, Adhemerval Zanella wrote:
>>> Changes from previous version:
>>>
>>> - Fixed __nusers placement for __PTHREAD_MUTEX_NUSERS_AFTER_KIND.
>>> - Fixed typos.
>>>
>>> ---
>>>
>>> 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.
>>>
>>> Signed-off-by: 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): New
>>> defines.
>>> * sysdeps/arm/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/hppa/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/ia64/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/m68k/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/microblaze/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/mips/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/nios2/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/powerpc/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/s390/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/sh/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/sparc/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/tile/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
>>> * sysdeps/x86/nptl/bits/pthreadtypes-arch.h
>>> (__PTHREAD_MUTEX_NUSERS_AFTER_KIND, __PTHREAD_MUTEX_USE_UNION): New
>>> defines.
> LGTM.
>
> Thanks.
>
> --
> H.J.
Are you going to check in your patches to fix BZ #22298?
--
H.J.