diff options
author | Ulrich Drepper <drepper@redhat.com> | 1998-12-21 12:25:07 +0000 |
---|---|---|
committer | Ulrich Drepper <drepper@redhat.com> | 1998-12-21 12:25:07 +0000 |
commit | d17a729b483109285ac4913c3fe4f2c620b87fc6 (patch) | |
tree | 17c9ddc622b007d816c3b1a9d4e2499dde926da3 /linuxthreads/pthread.c | |
parent | 095827866f985081ad64a5eea34c0fe5df854e32 (diff) | |
download | glibc-d17a729b483109285ac4913c3fe4f2c620b87fc6.tar glibc-d17a729b483109285ac4913c3fe4f2c620b87fc6.tar.gz glibc-d17a729b483109285ac4913c3fe4f2c620b87fc6.tar.bz2 glibc-d17a729b483109285ac4913c3fe4f2c620b87fc6.zip |
Update.
1998-12-21 Ulrich Drepper <drepper@cygnus.com>
* inet/gethstbynm_r.c: Remove NEED__RES definition since we do this
anyway for digits_dots.c.
* nss/getXXbyYY.c: Initialize _res before using digits_dots.c
functions.
* nss/getXXbyYY_r.c: Likewise.
1998-12-19 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* sunrpc/key_call.c (getkeyserv_handle): Use __fcntl instead of
fcntl.
1998-12-20 Andreas Schwab <schwab@issan.cs.uni-dortmund.de>
* locale/weight.h (get_weight): Extract string elements as
unsigned values.
Diffstat (limited to 'linuxthreads/pthread.c')
-rw-r--r-- | linuxthreads/pthread.c | 22 |
1 files changed, 10 insertions, 12 deletions
diff --git a/linuxthreads/pthread.c b/linuxthreads/pthread.c index 004c346e3a..8d892b7bb5 100644 --- a/linuxthreads/pthread.c +++ b/linuxthreads/pthread.c @@ -459,9 +459,7 @@ static void pthread_exit_process(int retcode, void *arg) /* The handler for the RESTART signal just records the signal received in the thread descriptor, and optionally performs a siglongjmp - (for pthread_cond_timedwait). - For the thread manager thread, redirect the signal to - __pthread_manager_sighandler. */ + (for pthread_cond_timedwait). */ #ifndef __i386__ static void pthread_handle_sigrestart(int sig) @@ -474,18 +472,15 @@ static void pthread_handle_sigrestart(int sig, struct sigcontext ctx) asm volatile ("movw %w0,%%gs" : : "r" (ctx.gs)); self = thread_self(); #endif - if (self == &__pthread_manager_thread) { - __pthread_manager_sighandler(sig); - } else { - THREAD_SETMEM(self, p_signal, sig); - if (THREAD_GETMEM(self, p_signal_jmp) != NULL) - siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1); - } + THREAD_SETMEM(self, p_signal, sig); + if (THREAD_GETMEM(self, p_signal_jmp) != NULL) + siglongjmp(*THREAD_GETMEM(self, p_signal_jmp), 1); } /* The handler for the CANCEL signal checks for cancellation (in asynchronous mode), for process-wide exit and exec requests. - For the thread manager thread, we ignore the signal. + For the thread manager thread, redirect the signal to + __pthread_manager_sighandler. The debugging strategy is as follows: On reception of a REQ_DEBUG request (sent by new threads created to the thread manager under debugging mode), the thread manager throws @@ -510,7 +505,10 @@ static void pthread_handle_sigcancel(int sig, struct sigcontext ctx) #endif if (self == &__pthread_manager_thread) - return; + { + __pthread_manager_sighandler(sig); + return; + } if (__pthread_exit_requested) { /* Main thread should accumulate times for thread manager and its children, so that timings for main thread account for all threads. */ |