(__linuxthreads_initial_report_events): New variable. (__pthread_initialize_manager): Use it to initialize p_report_events of initial thread. [TLS]: Store pointer to descriptor of manager in __pthread_handles.

This commit is contained in:
Ulrich Drepper 2002-08-08 05:20:04 +00:00
parent e8e9149870
commit fc0154dd77
1 changed files with 9 additions and 1 deletions

View File

@ -236,6 +236,8 @@ const int __pthread_offsetof_pid = offsetof(struct _pthread_descr_struct,
const int __linuxthreads_pthread_sizeof_descr const int __linuxthreads_pthread_sizeof_descr
= sizeof(struct _pthread_descr_struct); = sizeof(struct _pthread_descr_struct);
const int __linuxthreads_initial_report_events;
/* Forward declarations */ /* Forward declarations */
static void pthread_onexit_process(int retcode, void *arg); static void pthread_onexit_process(int retcode, void *arg);
@ -622,7 +624,7 @@ int __pthread_initialize_manager(void)
#ifdef USE_TLS #ifdef USE_TLS
/* Allocate memory for the thread descriptor and the dtv. */ /* Allocate memory for the thread descriptor and the dtv. */
manager_thread = tcb = _dl_allocate_tls (); __pthread_handles[1].h_descr = manager_thread = tcb = _dl_allocate_tls ();
if (tcb == NULL) { if (tcb == NULL) {
free(__pthread_manager_thread_bos); free(__pthread_manager_thread_bos);
__libc_close(manager_pipe[0]); __libc_close(manager_pipe[0]);
@ -651,8 +653,14 @@ int __pthread_initialize_manager(void)
/* Start the thread manager */ /* Start the thread manager */
pid = 0; pid = 0;
#ifdef USE_TLS #ifdef USE_TLS
if (__linuxthreads_initial_report_events != 0)
THREAD_SETMEM (((pthread_descr) NULL), p_report_events,
__linuxthreads_initial_report_events);
report_events = THREAD_GETMEM (((pthread_descr) NULL), p_report_events); report_events = THREAD_GETMEM (((pthread_descr) NULL), p_report_events);
#else #else
if (__linuxthreads_initial_report_events != 0)
__pthread_initial_thread.p_report_events
= __linuxthreads_initial_report_events;
report_events = __pthread_initial_thread.p_report_events; report_events = __pthread_initial_thread.p_report_events;
#endif #endif
if (__builtin_expect (report_events, 0)) if (__builtin_expect (report_events, 0))