summaryrefslogtreecommitdiffstats
path: root/lib/libpthread/thread/thr_private.h
diff options
context:
space:
mode:
authordeischen <deischen@FreeBSD.org>1999-12-17 00:56:36 +0000
committerdeischen <deischen@FreeBSD.org>1999-12-17 00:56:36 +0000
commit17ee572a14054fb3c892f9dc5ee491e75bc8f3f5 (patch)
tree5d51d9a812640e396f61d1c8d3b91b7f6c0cdba7 /lib/libpthread/thread/thr_private.h
parent3bd28ea93ef0db4dbbbf6b6671392ccbc020a864 (diff)
downloadFreeBSD-src-17ee572a14054fb3c892f9dc5ee491e75bc8f3f5.zip
FreeBSD-src-17ee572a14054fb3c892f9dc5ee491e75bc8f3f5.tar.gz
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
Diffstat (limited to 'lib/libpthread/thread/thr_private.h')
-rw-r--r--lib/libpthread/thread/thr_private.h4
1 files changed, 3 insertions, 1 deletions
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);
OpenPOWER on IntegriCloud