(__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:
parent
e8e9149870
commit
fc0154dd77
|
@ -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))
|
||||||
|
|
Loading…
Reference in New Issue