]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
htl: Add type sizes in bits/pthreadtypes-arch.h and check them
authorSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 13 Jan 2020 00:17:07 +0000 (01:17 +0100)
committerSamuel Thibault <samuel.thibault@ens-lyon.org>
Mon, 13 Jan 2020 00:24:43 +0000 (01:24 +0100)
14 files changed:
sysdeps/htl/pt-attr-init.c
sysdeps/htl/pt-barrier-init.c
sysdeps/htl/pt-barrierattr-init.c
sysdeps/htl/pt-cond-init.c
sysdeps/htl/pt-condattr-init.c
sysdeps/htl/pt-mutex-init.c
sysdeps/htl/pt-mutexattr-init.c
sysdeps/htl/pt-once.c
sysdeps/htl/pt-rwlock-init.c
sysdeps/htl/pt-rwlockattr-init.c
sysdeps/htl/pthreadP.h
sysdeps/i386/htl/bits/pthreadtypes-arch.h
sysdeps/mach/hurd/htl/pt-mutex-init.c
sysdeps/mach/hurd/htl/pt-mutexattr-init.c

index 29111763fa483c3ba7257423f1477e4191bc906f..7b20204cd72e98d1f9cfc761ee15f06bf6328273 100644 (file)
@@ -22,6 +22,8 @@
 int
 __pthread_attr_init (pthread_attr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_attr_t, __SIZEOF_PTHREAD_ATTR_T);
+
   *attr = __pthread_default_attr;
   return 0;
 }
index f8befde66dd7902baa2c02f082b2e2478099ca51..2197618238cb22ebf31f459a4d9e5fd1f502aa08 100644 (file)
@@ -26,6 +26,8 @@ int
 pthread_barrier_init (pthread_barrier_t *barrier,
                      const pthread_barrierattr_t *attr, unsigned count)
 {
+  ASSERT_TYPE_SIZE (pthread_barrier_t, __SIZEOF_PTHREAD_BARRIER_T);
+
   if (count == 0)
     return EINVAL;
 
index ddda87d1c85a2fd7e0e3413b6ee67f600b9ccf94..a0d0e3a98f9958475264b0cec0b28276cec622a1 100644 (file)
@@ -22,6 +22,8 @@
 int
 pthread_barrierattr_init (pthread_barrierattr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_barrierattr_t, __SIZEOF_PTHREAD_BARRIERATTR_T);
+
   *attr = __pthread_default_barrierattr;
   return 0;
 }
index 3ba1f11881504e6717949f0c86dae34342e342cc..c5330b5931d0f0a50f86cad3563ff5c7857a9dff 100644 (file)
@@ -25,6 +25,8 @@
 int
 __pthread_cond_init (pthread_cond_t *cond, const pthread_condattr_t * attr)
 {
+  ASSERT_TYPE_SIZE (pthread_cond_t, __SIZEOF_PTHREAD_COND_T);
+
   *cond = (pthread_cond_t) __PTHREAD_COND_INITIALIZER;
 
   if (attr == NULL
index 9018490ab0e77878d86e17618f5837e3e5694e58..90f5d1b6d637fe78731ee50c13146e07a82411ea 100644 (file)
@@ -22,6 +22,8 @@
 int
 __pthread_condattr_init (pthread_condattr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_condattr_t, __SIZEOF_PTHREAD_CONDATTR_T);
+
   *attr = __pthread_default_condattr;
   return 0;
 }
index e20d44c64cad31943540b5f03f056361ecc0b8fc..c59bd8a3f5ba43bfa87a736310a18499884ac1d1 100644 (file)
@@ -28,6 +28,8 @@ _pthread_mutex_init (pthread_mutex_t *mutex, const pthread_mutexattr_t *attr)
 {
   *mutex = (pthread_mutex_t) __PTHREAD_MUTEX_INITIALIZER;
 
+  ASSERT_TYPE_SIZE (pthread_mutex_t, __SIZEOF_PTHREAD_MUTEX_T);
+
   if (attr == NULL
       || memcmp (attr, &__pthread_default_mutexattr, sizeof (*attr)) == 0)
     /* The default attributes.  */
index c9681863ed9c30b1e09ae4ce877dd4495140960d..a96e52dedfd7d6261089eac7a383c08d688af17e 100644 (file)
@@ -22,6 +22,8 @@
 int
 __pthread_mutexattr_init (pthread_mutexattr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_mutexattr_t, __SIZEOF_PTHREAD_MUTEXATTR_T);
+
   *attr = __pthread_default_mutexattr;
   return 0;
 }
index b818ca4d245cb009ba52db099707da24da1bb96c..0581f7bd6c5951238090348a41347dd7ad790763 100644 (file)
@@ -24,6 +24,8 @@
 int
 __pthread_once (pthread_once_t *once_control, void (*init_routine) (void))
 {
+  ASSERT_TYPE_SIZE (pthread_once_t, __SIZEOF_PTHREAD_ONCE_T);
+
   atomic_full_barrier ();
   if (once_control->__run == 0)
     {
index d79b018f3ad9207a462f4f5fa5a1fdb5ff912c32..0cba0764be6073944212f2f3d81ae2c824b942b5 100644 (file)
@@ -24,6 +24,8 @@ int
 _pthread_rwlock_init (pthread_rwlock_t *rwlock,
                      const pthread_rwlockattr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_rwlock_t, __SIZEOF_PTHREAD_RWLOCK_T);
+
   *rwlock = (pthread_rwlock_t) __PTHREAD_RWLOCK_INITIALIZER;
 
   if (attr == NULL
index 721e5ec555df94d0761d3e70f7e621b37ba1d91e..bbc7b87990b27d3c1d31583006e4b30279ede95b 100644 (file)
@@ -22,6 +22,8 @@
 int
 pthread_rwlockattr_init (pthread_rwlockattr_t *attr)
 {
+  ASSERT_TYPE_SIZE (pthread_rwlockattr_t, __SIZEOF_PTHREAD_RWLOCKATTR_T);
+
   *attr = __pthread_default_rwlockattr;
   return 0;
 }
index 30e074c1d0da57d7feb53614d20509a9a23f8637..af0154538ab1b7b6cf05508946455f82ea1df3e9 100644 (file)
@@ -74,4 +74,8 @@ hidden_proto (__pthread_setspecific)
 hidden_proto (_pthread_mutex_init)
 #endif
 
+#define ASSERT_TYPE_SIZE(type, size)                                   \
+  _Static_assert (sizeof (type) == size,                               \
+                 "sizeof (" #type ") != " #size)
+
 #endif /* pthreadP.h */
index 39d8ff3f8e970cd610ab538409b960b49e8306d4..17568fb53612df02a36aaa40f8f9626204bab114 100644 (file)
 #ifndef _BITS_PTHREADTYPES_ARCH_H
 #define _BITS_PTHREADTYPES_ARCH_H      1
 
+#define __SIZEOF_PTHREAD_MUTEX_T 32
+#define __SIZEOF_PTHREAD_ATTR_T 32
+#define __SIZEOF_PTHREAD_RWLOCK_T 28
+#define __SIZEOF_PTHREAD_BARRIER_T 24
+#define __SIZEOF_PTHREAD_MUTEXATTR_T 16
+#define __SIZEOF_PTHREAD_COND_T 20
+#define __SIZEOF_PTHREAD_CONDATTR_T 8
+#define __SIZEOF_PTHREAD_RWLOCKATTR_T 4
+#define __SIZEOF_PTHREAD_BARRIERATTR_T 4
+#define __SIZEOF_PTHREAD_ONCE_T 8
+
+#define __LOCK_ALIGNMENT
+#define __ONCE_ALIGNMENT
+
 #endif /* bits/pthreadtypes.h */
index 4665bfaf5f1882ed3fdbf245a713f589eb6a0b44..6b804116a540e2f03275b7929fd19b6b8c059f91 100644 (file)
@@ -34,6 +34,8 @@ static const pthread_mutexattr_t dfl_attr = {
 int
 _pthread_mutex_init (pthread_mutex_t *mtxp, const pthread_mutexattr_t *attrp)
 {
+  ASSERT_TYPE_SIZE (pthread_mutex_t, __SIZEOF_PTHREAD_MUTEX_T);
+
   if (attrp == NULL)
     attrp = &dfl_attr;
 
index f659a51c28e13e01c4b1eb4f2468e290ae49fd1c..569ed11c9cbb49a91ac906e8485bb9940478eb3a 100644 (file)
@@ -33,6 +33,8 @@ static const pthread_mutexattr_t dfl_attr = {
 int
 __pthread_mutexattr_init (pthread_mutexattr_t *attrp)
 {
+  ASSERT_TYPE_SIZE (pthread_mutexattr_t, __SIZEOF_PTHREAD_MUTEXATTR_T);
+
   *attrp = dfl_attr;
   return 0;
 }