From fc0154dd777997ff424b4dcde99404b8a3787110 Mon Sep 17 00:00:00 2001 From: Ulrich Drepper Date: Thu, 8 Aug 2002 05:20:04 +0000 Subject: (__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. --- linuxthreads/pthread.c | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) (limited to 'linuxthreads/pthread.c') diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index ae42ebe1c8..cc4d26d304 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -236,6 +236,8 @@ const int __pthread_offsetof_pid = offsetof(struct _pthread_descr_struct, const int __linuxthreads_pthread_sizeof_descr = sizeof(struct _pthread_descr_struct); +const int __linuxthreads_initial_report_events; + /* Forward declarations */ static void pthread_onexit_process(int retcode, void *arg); @@ -622,7 +624,7 @@ int __pthread_initialize_manager(void) #ifdef USE_TLS /* 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) { free(__pthread_manager_thread_bos); __libc_close(manager_pipe[0]); @@ -651,8 +653,14 @@ int __pthread_initialize_manager(void) /* Start the thread manager */ pid = 0; #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); #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; #endif if (__builtin_expect (report_events, 0)) -- cgit v1.2.3