Update.
authorUlrich Drepper <drepper@redhat.com>
Wed, 28 Aug 2002 06:47:35 +0000 (06:47 +0000)
committerUlrich Drepper <drepper@redhat.com>
Wed, 28 Aug 2002 06:47:35 +0000 (06:47 +0000)
2002-08-08  Jakub Jelinek  <jakub@redhat.com>

* sysdeps/unix/sysv/linux/bits/local_lim.h (PTHREAD_THREADS_MAX):
Bump to 16384.
* manager.c (__pthread_handles): Remove.
* pthandles.c: New file.
* pthread.c (__pthread_initialize_minimal): Initialize
__pthread_handles[0] and __pthread_handles[1].
* Makefile (libpthread-routines): Add pthandles (must be last).

linuxthreads/ChangeLog
linuxthreads/Makefile
linuxthreads/manager.c
linuxthreads/pthandles.c [new file with mode: 0644]
linuxthreads/pthread.c

index a1f08ac..1114321 100644 (file)
@@ -1,3 +1,13 @@
+2002-08-08  Jakub Jelinek  <jakub@redhat.com>
+
+       * sysdeps/unix/sysv/linux/bits/local_lim.h (PTHREAD_THREADS_MAX):
+       Bump to 16384.
+       * manager.c (__pthread_handles): Remove.
+       * pthandles.c: New file.
+       * pthread.c (__pthread_initialize_minimal): Initialize
+       __pthread_handles[0] and __pthread_handles[1].
+       * Makefile (libpthread-routines): Add pthandles (must be last).
+
 2002-08-26 Brian Youmans <3diff@gnu.org>
 
        * Examples/ex10.c: Corrected version number in Lesser GPL copying
index 9c5cd8f..ba43279 100644 (file)
@@ -36,7 +36,8 @@ libpthread-routines := attr cancel condvar join manager mutex ptfork \
                       ptlongjmp pthread signals specific errno lockfile \
                       semaphore spinlock wrapsyscall rwlock pt-machine \
                       oldsemaphore events getcpuclockid pspinlock barrier \
-                      ptclock_gettime ptclock_settime sighandler
+                      ptclock_gettime ptclock_settime sighandler \
+                      pthandles
 
 nodelete-yes = -Wl,--enable-new-dtags,-z,nodelete
 initfirst-yes = -Wl,--enable-new-dtags,-z,initfirst
index 24be941..08bf467 100644 (file)
 #include "restart.h"
 #include "semaphore.h"
 
-/* Array of active threads. Entry 0 is reserved for the initial thread. */
-struct pthread_handle_struct __pthread_handles[PTHREAD_THREADS_MAX]
-#ifdef USE_TLS
-# if __LT_SPINLOCK_INIT != 0
-= {
-  { __LOCK_INITIALIZER, NULL, 0},
-  { __LOCK_INITIALIZER, NULL, 0},
-  /* All NULLs */
-}
-# endif
-#else
-= {
-  { __LOCK_INITIALIZER, &__pthread_initial_thread, 0},
-  { __LOCK_INITIALIZER, &__pthread_manager_thread, 0},
-  /* All NULLs */
-}
-#endif
-;
-
 /* For debugging purposes put the maximum number of threads in a variable.  */
 const int __linuxthreads_pthread_threads_max = PTHREAD_THREADS_MAX;
 
diff --git a/linuxthreads/pthandles.c b/linuxthreads/pthandles.c
new file mode 100644 (file)
index 0000000..4d2ac19
--- /dev/null
@@ -0,0 +1,6 @@
+#include <ldsodefs.h>
+#include "pthread.h"
+#include "internals.h"
+
+/* Array of active threads. Entry 0 is reserved for the initial thread. */
+struct pthread_handle_struct __pthread_handles[PTHREAD_THREADS_MAX];
index 1848bfb..ae40254 100644 (file)
@@ -420,6 +420,11 @@ __pthread_initialize_minimal(void)
 #ifdef USE_TLS
   pthread_descr self;
 
+  /* First of all init __pthread_handles[0] and [1] if needed.  */
+# if __LT_SPINLOCK_INIT != 0
+  __pthread_handles[0].h_lock = __LOCK_INITIALIZER;
+  __pthread_handles[1].h_lock = __LOCK_INITIALIZER;
+# endif
 # ifndef SHARED
   /* Unlike in the dynamically linked case the dynamic linker has not
      taken care of initializing the TLS data structures.  */
@@ -451,6 +456,14 @@ __pthread_initialize_minimal(void)
   /* And fill in the pointer the the thread __pthread_handles array.  */
   __pthread_handles[0].h_descr = self;
 #else
+  /* First of all init __pthread_handles[0] and [1].  */
+# if __LT_SPINLOCK_INIT != 0
+  __pthread_handles[0].h_lock = __LOCK_INITIALIZER;
+  __pthread_handles[1].h_lock = __LOCK_INITIALIZER;
+# endif
+  __pthread_handles[0].h_descr = &__pthread_initial_thread;
+  __pthread_handles[1].h_descr = &__pthread_manager_thread;
+
   /* If we have special thread_self processing, initialize that for the
      main thread now.  */
 # ifdef INIT_THREAD_SELF