+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
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
#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;
--- /dev/null
+#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];
#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. */
/* 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