about summary refs log tree commit diff
path: root/sysdeps/nptl
diff options
context:
space:
mode:
authorAdhemerval Zanella <adhemerval.zanella@linaro.org>2017-11-14 19:10:13 -0200
committerAdhemerval Zanella <adhemerval.zanella@linaro.org>2019-11-26 13:53:36 +0000
commit94a62cc55a3175fd375081d9b4366479371ed2ab (patch)
treef280b27a50b58cd546f7491d0698cab5d4403c7d /sysdeps/nptl
parent7df8af43ad1cd8ce527444de50bee6f35eebe071 (diff)
downloadglibc-94a62cc55a3175fd375081d9b4366479371ed2ab.tar.gz
glibc-94a62cc55a3175fd375081d9b4366479371ed2ab.tar.xz
glibc-94a62cc55a3175fd375081d9b4366479371ed2ab.zip
nptl: Add default pthreadtypes-arch.h
This patch adds a default pthreadtypes-arch.h, the idea is to simpify
new ports inclusion and an override is required only if the architecture
adds some arch-specific extensions or requirement.

The default values on the new generic header are based on current
architecture define value and they are not optimal compared to current
code requirements as below.

  - On 64 bits __SIZEOF_PTHREAD_BARRIER_T is defined as 32 while is
    sizeof (struct pthread_barrier) is 20 bytes.

  - On 32 bits __SIZEOF_PTHREAD_ATTR_T is defined as 36 while
    sizeof (struct pthread_attr) is 32.

The default values are not changed so the generic header could be
used by some architectures.

Checked with a build on affected abis.

Change-Id: Ie0cd586258a2650f715c1af0c9fe4e7063b0409a
Diffstat (limited to 'sysdeps/nptl')
-rw-r--r--sysdeps/nptl/bits/pthreadtypes-arch.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/sysdeps/nptl/bits/pthreadtypes-arch.h b/sysdeps/nptl/bits/pthreadtypes-arch.h
new file mode 100644
index 0000000000..373dd2bfc8
--- /dev/null
+++ b/sysdeps/nptl/bits/pthreadtypes-arch.h
@@ -0,0 +1,45 @@
+/* Machine-specific pthread type layouts.  Generic version.
+   Copyright (C) 2019 Free Software Foundation, Inc.
+
+   This file is part of the GNU C Library.
+
+   The GNU C Library is free software; you can redistribute it and/or
+   modify it under the terms of the GNU Lesser General Public
+   License as published by the Free Software Foundation; either
+   version 2.1 of the License, or (at your option) any later version.
+
+   The GNU C Library is distributed in the hope that it will be useful,
+   but WITHOUT ANY WARRANTY; without even the implied warranty of
+   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the GNU
+   Lesser General Public License for more details.
+
+   You should have received a copy of the GNU Lesser General Public
+   License along with the GNU C Library; if not, see
+   <http://www.gnu.org/licenses/>.  */
+
+#ifndef _BITS_PTHREADTYPES_ARCH_H
+#define _BITS_PTHREADTYPES_ARCH_H	1
+
+#include <bits/wordsize.h>
+
+#if __WORDSIZE == 64
+# define __SIZEOF_PTHREAD_ATTR_T        56
+# define __SIZEOF_PTHREAD_MUTEX_T       40
+# define __SIZEOF_PTHREAD_RWLOCK_T      56
+# define __SIZEOF_PTHREAD_BARRIER_T     32
+#else
+# define __SIZEOF_PTHREAD_ATTR_T        36
+# define __SIZEOF_PTHREAD_MUTEX_T       24
+# define __SIZEOF_PTHREAD_RWLOCK_T      32
+# define __SIZEOF_PTHREAD_BARRIER_T     20
+#endif
+#define __SIZEOF_PTHREAD_MUTEXATTR_T     4
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T    8
+#define __SIZEOF_PTHREAD_BARRIERATTR_T   4
+#define __SIZEOF_PTHREAD_COND_T         48
+#define __SIZEOF_PTHREAD_CONDATTR_T      4
+
+#define __LOCK_ALIGNMENT
+#define __ONCE_ALIGNMENT
+
+#endif	/* bits/pthreadtypes.h */