From: Ulrich Drepper Date: Wed, 28 Aug 2002 06:47:35 +0000 (+0000) Subject: Update. X-Git-Tag: cvs/glibc-2-3~334 X-Git-Url: http://git.ipfire.org/?a=commitdiff_plain;h=f0377954d7c324c0fe320eb1ca22ea46837e9da3;p=thirdparty%2Fglibc.git Update. 2002-08-08 Jakub Jelinek * 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). --- diff --git a/linuxthreads/ChangeLog b/linuxthreads/ChangeLog index a1f08ac36d2..11143211278 100644 --- a/linuxthreads/ChangeLog +++ b/linuxthreads/ChangeLog @@ -1,3 +1,13 @@ +2002-08-08 Jakub Jelinek + + * 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 diff --git a/linuxthreads/Makefile b/linuxthreads/Makefile index 9c5cd8f1bf7..ba4327921a9 100644 --- a/linuxthreads/Makefile +++ b/linuxthreads/Makefile @@ -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 diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 24be94129b4..08bf4678158 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -36,25 +36,6 @@ #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 index 00000000000..4d2ac1940d4 --- /dev/null +++ b/linuxthreads/pthandles.c @@ -0,0 +1,6 @@ +#include +#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]; diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 1848bfb31d6..ae402549826 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -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