This is the mail archive of the glibc-cvs@sourceware.org mailing list for the glibc project.


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]
Other format: [Raw text]

[glibc] Assume LLL_LOCK_INITIALIZER is 0


https://sourceware.org/git/gitweb.cgi?p=glibc.git;h=959aff9fa22c45e0fa11cd88c9f8ea10bd9ba494

commit 959aff9fa22c45e0fa11cd88c9f8ea10bd9ba494
Author: Adhemerval Zanella <adhemerval.zanella@linaro.org>
Date:   Fri Feb 22 12:10:26 2019 -0300

    Assume LLL_LOCK_INITIALIZER is 0
    
    Since hppa is not an outlier anymore regarding LLL_LOCK_INITIALIZER value,
    we can now assume it 0 for all architectures.
    
    Checked on a build for all major ABIs.
    
    	* nptl/nptl-init.c (__pthread_initialize_minimal_internal): Remove
    	initialization for LLL_LOCK_INITIALIZER different than 0.
    	* nptl/old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0):
    	Assume LLL_LOCK_INITIALIZER being 0.
    	* nptl/old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise.
    	* nptl/old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0):
    	Likewise.
    	* nptl/old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise.
    	* sysdeps/nptl/libc-lockP.h (__libc_lock_define_initialized): Likewise.

Diff:
---
 ChangeLog                         | 10 ++++++++++
 nptl/nptl-init.c                  |  2 --
 nptl/old_pthread_cond_broadcast.c |  9 ---------
 nptl/old_pthread_cond_signal.c    |  9 ---------
 nptl/old_pthread_cond_timedwait.c |  9 ---------
 nptl/old_pthread_cond_wait.c      |  9 ---------
 sysdeps/nptl/libc-lockP.h         | 17 +++--------------
 7 files changed, 13 insertions(+), 52 deletions(-)

diff --git a/ChangeLog b/ChangeLog
index 6a26dad..4cb846f 100644
--- a/ChangeLog
+++ b/ChangeLog
@@ -1,5 +1,15 @@
 2019-05-14  Adhemerval Zanella  <adhemerval.zanella@linaro.org>
 
+	* nptl/nptl-init.c (__pthread_initialize_minimal_internal): Remove
+	initialization for LLL_LOCK_INITIALIZER different than 0.
+	* nptl/old_pthread_cond_broadcast.c (__pthread_cond_broadcast_2_0):
+	Assume LLL_LOCK_INITIALIZER being 0.
+	* nptl/old_pthread_cond_signal.c (__pthread_cond_signal_2_0): Likewise.
+	* nptl/old_pthread_cond_timedwait.c (__pthread_cond_timedwait_2_0):
+	Likewise.
+	* nptl/old_pthread_cond_wait.c (__pthread_cond_wait_2_0): Likewise.
+	* sysdeps/nptl/libc-lockP.h (__libc_lock_define_initialized): Likewise.
+
 	* nptl/lowlevellock.c (__lll_lock_wait, __lll_lock_wait_private):
 	Optimize futex call and add systemtap probe.
 
diff --git a/nptl/nptl-init.c b/nptl/nptl-init.c
index b845c6e..2926558 100644
--- a/nptl/nptl-init.c
+++ b/nptl/nptl-init.c
@@ -265,8 +265,6 @@ __pthread_initialize_minimal_internal (void)
   __pthread_initialize_pids (pd);
   THREAD_SETMEM (pd, specific[0], &pd->specific_1stblock[0]);
   THREAD_SETMEM (pd, user_stack, true);
-  if (LLL_LOCK_INITIALIZER != 0)
-    THREAD_SETMEM (pd, lock, LLL_LOCK_INITIALIZER);
 
   /* Initialize the robust mutex data.  */
   {
diff --git a/nptl/old_pthread_cond_broadcast.c b/nptl/old_pthread_cond_broadcast.c
index f561eb9..04f285a 100644
--- a/nptl/old_pthread_cond_broadcast.c
+++ b/nptl/old_pthread_cond_broadcast.c
@@ -31,18 +31,9 @@ __pthread_cond_broadcast_2_0 (pthread_cond_2_0_t *cond)
     {
       pthread_cond_t *newcond;
 
-#if LLL_LOCK_INITIALIZER == 0
       newcond = (pthread_cond_t *) calloc (sizeof (pthread_cond_t), 1);
       if (newcond == NULL)
 	return ENOMEM;
-#else
-      newcond = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
-      if (newcond == NULL)
-	return ENOMEM;
-
-      /* Initialize the condvar.  */
-      (void) pthread_cond_init (newcond, NULL);
-#endif
 
       if (atomic_compare_and_exchange_bool_acq (&cond->cond, newcond, NULL))
 	/* Somebody else just initialized the condvar.  */
diff --git a/nptl/old_pthread_cond_signal.c b/nptl/old_pthread_cond_signal.c
index a167c8a..9b67cb8 100644
--- a/nptl/old_pthread_cond_signal.c
+++ b/nptl/old_pthread_cond_signal.c
@@ -31,18 +31,9 @@ __pthread_cond_signal_2_0 (pthread_cond_2_0_t *cond)
     {
       pthread_cond_t *newcond;
 
-#if LLL_LOCK_INITIALIZER == 0
       newcond = (pthread_cond_t *) calloc (sizeof (pthread_cond_t), 1);
       if (newcond == NULL)
 	return ENOMEM;
-#else
-      newcond = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
-      if (newcond == NULL)
-	return ENOMEM;
-
-      /* Initialize the condvar.  */
-      (void) pthread_cond_init (newcond, NULL);
-#endif
 
       if (atomic_compare_and_exchange_bool_acq (&cond->cond, newcond, NULL))
 	/* Somebody else just initialized the condvar.  */
diff --git a/nptl/old_pthread_cond_timedwait.c b/nptl/old_pthread_cond_timedwait.c
index f920320..a1fde85 100644
--- a/nptl/old_pthread_cond_timedwait.c
+++ b/nptl/old_pthread_cond_timedwait.c
@@ -32,18 +32,9 @@ __pthread_cond_timedwait_2_0 (pthread_cond_2_0_t *cond, pthread_mutex_t *mutex,
     {
       pthread_cond_t *newcond;
 
-#if LLL_LOCK_INITIALIZER == 0
       newcond = (pthread_cond_t *) calloc (sizeof (pthread_cond_t), 1);
       if (newcond == NULL)
 	return ENOMEM;
-#else
-      newcond = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
-      if (newcond == NULL)
-	return ENOMEM;
-
-      /* Initialize the condvar.  */
-      (void) pthread_cond_init (newcond, NULL);
-#endif
 
       if (atomic_compare_and_exchange_bool_acq (&cond->cond, newcond, NULL))
 	/* Somebody else just initialized the condvar.  */
diff --git a/nptl/old_pthread_cond_wait.c b/nptl/old_pthread_cond_wait.c
index 2be41b3..bb65340 100644
--- a/nptl/old_pthread_cond_wait.c
+++ b/nptl/old_pthread_cond_wait.c
@@ -31,18 +31,9 @@ __pthread_cond_wait_2_0 (pthread_cond_2_0_t *cond, pthread_mutex_t *mutex)
     {
       pthread_cond_t *newcond;
 
-#if LLL_LOCK_INITIALIZER == 0
       newcond = (pthread_cond_t *) calloc (sizeof (pthread_cond_t), 1);
       if (newcond == NULL)
 	return ENOMEM;
-#else
-      newcond = (pthread_cond_t *) malloc (sizeof (pthread_cond_t));
-      if (newcond == NULL)
-	return ENOMEM;
-
-      /* Initialize the condvar.  */
-      (void) pthread_cond_init (newcond, NULL);
-#endif
 
       if (atomic_compare_and_exchange_bool_acq (&cond->cond, newcond, NULL))
 	/* Somebody else just initialized the condvar.  */
diff --git a/sysdeps/nptl/libc-lockP.h b/sysdeps/nptl/libc-lockP.h
index fc1bfe5..07d583f 100644
--- a/sysdeps/nptl/libc-lockP.h
+++ b/sysdeps/nptl/libc-lockP.h
@@ -71,23 +71,12 @@ typedef pthread_key_t __libc_key_t;
    For the C library we take a deeper look at the initializer.  For
    this implementation all fields are initialized to zero.  Therefore
    we don't initialize the variable which allows putting it into the
-   BSS section.  (Except on PA-RISC and other odd architectures, where
-   initialized locks must be set to one due to the lack of normal
-   atomic operations.) */
+   BSS section.  */
 
+_Static_assert (LLL_LOCK_INITIALIZER == 0, "LLL_LOCK_INITIALIZER != 0");
 #define _LIBC_LOCK_INITIALIZER LLL_LOCK_INITIALIZER
-#if IS_IN (libc) || IS_IN (libpthread)
-# if LLL_LOCK_INITIALIZER == 0
-#  define __libc_lock_define_initialized(CLASS,NAME) \
-  CLASS __libc_lock_t NAME;
-# else
-#  define __libc_lock_define_initialized(CLASS,NAME) \
-  CLASS __libc_lock_t NAME = LLL_LOCK_INITIALIZER;
-# endif
-#else
-# define __libc_lock_define_initialized(CLASS,NAME) \
+#define __libc_lock_define_initialized(CLASS,NAME) \
   CLASS __libc_lock_t NAME;
-#endif
 
 #define __libc_rwlock_define_initialized(CLASS,NAME) \
   CLASS __libc_rwlock_t NAME = PTHREAD_RWLOCK_INITIALIZER;


Index Nav: [Date Index] [Subject Index] [Author Index] [Thread Index]
Message Nav: [Date Prev] [Date Next] [Thread Prev] [Thread Next]