aboutsummaryrefslogtreecommitdiff
path: root/nptl
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-11-08 09:23:34 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2019-11-26 13:53:36 +0000
commit1c3f9acf1f1f75faa7a28bf39af64afda93839ac (patch)
tree41bdee95bb276b6712b2b64e86011613d9cad723 /nptl
parentnptl: Remove rwlock elision definitions (diff)
downloadglibc-1c3f9acf1f1f75faa7a28bf39af64afda93839ac.tar.gz
glibc-1c3f9acf1f1f75faa7a28bf39af64afda93839ac.tar.bz2
glibc-1c3f9acf1f1f75faa7a28bf39af64afda93839ac.zip
nptl: Add struct_mutex.h
The current way of defining the common mutex definition for POSIX and C11 on pthreadtypes-arch.h (added by commit 06be6368da16104be5) is not really the best options for newer ports. It requires define some misleading flags that should be always defined as 0 (__PTHREAD_COMPAT_PADDING_MID and __PTHREAD_COMPAT_PADDING_END), it exposes options used solely for linuxthreads compat mode (__PTHREAD_MUTEX_USE_UNION and __PTHREAD_MUTEX_NUSERS_AFTER_KIND), and requires newer ports to explicit define them (adding more boilerplate code). This patch adds a new default __pthread_mutex_s definition meant to be used by newer ports. Its layout mimics the current usage on both 32 and 64 bits ports and it allows most ports to use the generic definition. Only ports that use some arch-specific definition (such as hardware lock-elision or linuxthreads compat) requires specific headers. For 32 bit, the generic definitions mimic the other 32-bit ports of using an union to define the fields uses on adaptive and robust mutexes (thus not allowing both usage at same time) and by using a single linked-list for robust mutexes. Both decisions seemed to follow what recent ports have done and make the resulting pthread_mutex_t/mtx_t object smaller. Also the static intialization macro for pthread_mutex_t is set to use a macro __PTHREAD_MUTEX_INITIALIZER where the architecture can redefine in its struct_mutex.h if it requires additional fields to be initialized. Checked with a build on affected abis. Change-Id: I30a22c3e3497805fd6e52994c5925897cffcfe13
Diffstat (limited to 'nptl')
-rw-r--r--nptl/Makefile3
1 files changed, 2 insertions, 1 deletions
diff --git a/nptl/Makefile b/nptl/Makefile
index f9aadfd644..8178aba651 100644
--- a/nptl/Makefile
+++ b/nptl/Makefile
@@ -22,7 +22,8 @@ subdir := nptl
include ../Makeconfig
-headers := pthread.h semaphore.h bits/semaphore.h threads.h
+headers := pthread.h semaphore.h bits/semaphore.h threads.h \
+ bits/struct_mutex.h
extra-libs := libpthread
extra-libs-others := $(extra-libs)