]> git.ipfire.org Git - thirdparty/glibc.git/commitdiff
Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 28 Apr 1999 21:58:40 +0000 (21:58 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 28 Apr 1999 21:58:40 +0000 (21:58 +0000)
* sysdeps/pthread/bits/libc-lock.h (__libc_lock_define_initialized):
Don't use initializer since it is all zeroes.
(__libc_once_define): Likewise.

linuxthreads/ChangeLog
linuxthreads/sysdeps/pthread/bits/libc-lock.h

index b058c7f95c29195950b6900f174e3d26159d5f1b..a33730213b757fa4ece78e426d6445db47013ef3 100644 (file)
@@ -3,6 +3,10 @@
        * manager.c (pthread_allocate_stack): Optimize initialization of new
        thread descriptor.
 
+       * sysdeps/pthread/bits/libc-lock.h (__libc_lock_define_initialized):
+       Don't use initializer since it is all zeroes.
+       (__libc_once_define): Likewise.
+
 1999-04-16  Andreas Jaeger  <aj@arthur.rhein-neckar.de>
 
        * sysdeps/arm/Implies: Removed since cmpxchg/no-cmpxchg
index 593117073cbc5b1714c215f8441bc7a085613e4a..a14cea1aa75f9d99f44cc2c5e67d7da9fb9218a3 100644 (file)
@@ -1,5 +1,5 @@
 /* libc-internal interface for mutex locks.  LinuxThreads version.
-   Copyright (C) 1996, 1997, 1998 Free Software Foundation, Inc.
+   Copyright (C) 1996, 1997, 1998, 1999 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
@@ -42,9 +42,14 @@ typedef pthread_key_t __libc_key_t;
 #define __libc_lock_define(CLASS,NAME) \
   CLASS __libc_lock_t NAME;
 
-/* Define an initialized lock variable NAME with storage class CLASS.  */
+/* Define an initialized lock variable NAME with storage class CLASS.
+
+   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.  */
 #define __libc_lock_define_initialized(CLASS,NAME) \
-  CLASS __libc_lock_t NAME = PTHREAD_MUTEX_INITIALIZER;
+  CLASS __libc_lock_t NAME;
 
 /* Define an initialized recursive lock variable NAME with storage
    class CLASS.  */
@@ -101,8 +106,15 @@ typedef pthread_key_t __libc_key_t;
 
 
 /* Define once control variable.  */
-#define __libc_once_define(CLASS, NAME) \
+#if PTHREAD_ONCE_INIT == 0
+/* Special case for static variables where we can avoid the initialization
+   if it is zero.  */
+# define __libc_once_define(CLASS, NAME) \
+  CLASS pthread_once_t NAME
+#else
+# define __libc_once_define(CLASS, NAME) \
   CLASS pthread_once_t NAME = PTHREAD_ONCE_INIT
+#endif
 
 /* Call handler iff the first call.  */
 #define __libc_once(ONCE_CONTROL, INIT_FUNCTION) \