From f410bbff9bdafda36fadec4dfcd193618bf28eaf Mon Sep 17 00:00:00 2001 From: mini Date: Mon, 17 Feb 2003 10:05:18 +0000 Subject: Deliver signals posted via an upcall to the appropriate thread. --- lib/libpthread/thread/thr_kern.c | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) (limited to 'lib/libpthread/thread/thr_kern.c') diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c index 0747cff..c14d44a 100644 --- a/lib/libpthread/thread/thr_kern.c +++ b/lib/libpthread/thread/thr_kern.c @@ -248,6 +248,8 @@ _thread_kern_scheduler(struct kse_mailbox *km) pthread_t td, pthread, pthread_h; unsigned int current_tick; struct kse_thr_mailbox *tm, *p; + sigset_t sigset; + int i; DBG_MSG("entering\n"); while (!TAILQ_EMPTY(&_thread_list)) { @@ -280,8 +282,13 @@ _thread_kern_scheduler(struct kse_mailbox *km) } /* Deliver posted signals. */ - /* XXX: Not yet. */ DBG_MSG("Picking up signals\n"); + bcopy(&km->km_sigscaught, &sigset, sizeof(sigset_t)); + sigemptyset(&km->km_sigscaught); /* XXX */ + if (SIGNOTEMPTY(sigset)) + for (i = 1; i < NSIG; i++) + if (sigismember(&sigset, i) != 0) + _thread_sig_dispatch(i); if (_spinblock_count != 0) { /* -- cgit v1.1