From 17ee572a14054fb3c892f9dc5ee491e75bc8f3f5 Mon Sep 17 00:00:00 2001 From: deischen Date: Fri, 17 Dec 1999 00:56:36 +0000 Subject: Fixes for signal handling: o Don't call signal handlers with the signal handler access lock held. o Remove pending signals before calling signal handlers. If pending signals were not removed prior to handling them, invocation of the handler could cause the handler to be called more than once for the same signal. Found by: JB o When SIGCHLD arrives, wake up all threads in PS_WAIT_WAIT (wait4). PR: bin/15328 Reviewed by: jasone --- lib/libpthread/thread/thr_private.h | 4 +++- 1 file changed, 3 insertions(+), 1 deletion(-) (limited to 'lib/libpthread/thread/thr_private.h') diff --git a/lib/libpthread/thread/thr_private.h b/lib/libpthread/thread/thr_private.h index 70c7487..4326bf6 100644 --- a/lib/libpthread/thread/thr_private.h +++ b/lib/libpthread/thread/thr_private.h @@ -984,8 +984,10 @@ void _thread_kern_set_timeout(struct timespec *); void _thread_kern_sig_defer(void); void _thread_kern_sig_undefer(void); void _thread_sig_handler(int, int, ucontext_t *); -void _thread_sig_handle(int, ucontext_t *); +pthread_t _thread_sig_handle(int, ucontext_t *); void _thread_sig_init(void); +void _thread_sig_send(pthread_t pthread, int sig); +void _thread_sig_deliver(pthread_t pthread, int sig); void _thread_start(void); void _thread_start_sig_handler(void); void _thread_seterrno(pthread_t,int); -- cgit v1.1