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).
This commit is contained in:
Ulrich Drepper 2002-08-28 06:47:35 +00:00
parent 160e53fdd1
commit f0377954d7
5 changed files with 31 additions and 20 deletions

View 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

View 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

View file

@ -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;

6
linuxthreads/pthandles.c Normal file
View file

@ -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];

View 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