From: Ulrich Drepper Date: Mon, 22 Nov 1999 20:38:21 +0000 (+0000) Subject: (__pthread_manager_event): New function. X-Git-Url: http://git.ipfire.org/cgi-bin/gitweb.cgi?a=commitdiff_plain;h=746baf53fa716dfd31e7b3eee0257f99f6679fba;p=thirdparty%2Fglibc.git (__pthread_manager_event): New function. (pthread_start_thread_event): Fix computation of self. Use INIT_THREAD_SELF. --- diff --git a/linuxthreads/manager.c b/linuxthreads/manager.c index 4d8bedd45b8..94b78a474e8 100644 --- a/linuxthreads/manager.c +++ b/linuxthreads/manager.c @@ -182,6 +182,21 @@ int __pthread_manager(void *arg) } } +int __pthread_manager_event(void *arg) +{ + /* If we have special thread_self processing, initialize it. */ +#ifdef INIT_THREAD_SELF + INIT_THREAD_SELF(&__pthread_manager_thread, 1); +#endif + + /* Get the lock the manager will free once all is correctly set up. */ + __pthread_lock (THREAD_GETMEM((&__pthread_manager_thread), p_lock), NULL); + /* Free it immediately. */ + __pthread_unlock (THREAD_GETMEM((&__pthread_manager_thread), p_lock)); + + return __pthread_manager(arg); +} + /* Process creation */ static int pthread_start_thread(void *arg) @@ -232,8 +247,11 @@ static int pthread_start_thread(void *arg) static int pthread_start_thread_event(void *arg) { - pthread_descr self = thread_self (); + pthread_descr self = (pthread_descr) arg; +#ifdef INIT_THREAD_SELF + INIT_THREAD_SELF(self, self->p_nr); +#endif /* Get the lock the manager will free once all is correctly set up. */ __pthread_lock (THREAD_GETMEM(self, p_lock), NULL); /* Free it immediately. */