diff options
author | Ulrich Drepper <drepper@redhat.com> | 2003-09-17 05:03:05 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 2003-09-17 05:03:05 +0000 |
commit | 65947215c78a870c9e0b0217a7bd949164e1993b (patch) | |
tree | 6e2c470e5d6525965d19452dfb955523886876e5 /linuxthreads/pthread.c | |
parent | 3b6e3b632a68dd28e93290b84f9a25c15c7c6e3a (diff) | |
download | glibc-65947215c78a870c9e0b0217a7bd949164e1993b.zip glibc-65947215c78a870c9e0b0217a7bd949164e1993b.tar.gz glibc-65947215c78a870c9e0b0217a7bd949164e1993b.tar.bz2 |
(manager_thread): Remove static, add attribute_hidden. (thread_self_stack): Rename to... (__pthread_self_stack): ... this. Remove static. (pthread_handle_sigcancel): Use check_thread_self (). (pthread_handle_sigrestart): Likewise.
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 26 |
1 files changed, 4 insertions, 22 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 5d5368f..d44f890 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -55,7 +55,7 @@ extern struct __res_state _res; #ifdef USE_TLS /* We need only a few variables. */ -static pthread_descr manager_thread; +pthread_descr manager_thread attribute_hidden; #else @@ -896,7 +896,7 @@ pthread_descr __pthread_find_self(void) #else -static pthread_descr thread_self_stack(void) +pthread_descr __pthread_self_stack(void) { char *sp = CURRENT_STACK_FRAME; pthread_handle h; @@ -1023,7 +1023,7 @@ static void pthread_atexit_retcode(void *arg, int retcode) static void pthread_handle_sigrestart(int sig) { - pthread_descr self = thread_self(); + pthread_descr self = check_thread_self(); THREAD_SETMEM(self, p_signal, sig); if (THREAD_GETMEM(self, p_signal_jmp) != NULL) siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1); @@ -1036,31 +1036,13 @@ static void pthread_handle_sigrestart(int sig) static void pthread_handle_sigcancel(int sig) { - pthread_descr self = thread_self(); + pthread_descr self = check_thread_self(); sigjmp_buf * jmpbuf; if (self == manager_thread) { -#ifdef THREAD_SELF - /* A new thread might get a cancel signal before it is fully - initialized, so that the thread register might still point to the - manager thread. Double check that this is really the manager - thread. */ - pthread_descr real_self = thread_self_stack(); - if (real_self == manager_thread) - { - __pthread_manager_sighandler(sig); - return; - } - /* Oops, thread_self() isn't working yet.. */ - self = real_self; -# ifdef INIT_THREAD_SELF - INIT_THREAD_SELF(self, self->p_nr); -# endif -#else __pthread_manager_sighandler(sig); return; -#endif } if (__builtin_expect (__pthread_exit_requested, 0)) { /* Main thread should accumulate times for thread manager and its |