diff options
Diffstat (limited to 'lib/libpthread/thread/thr_kern.c')
-rw-r--r-- | lib/libpthread/thread/thr_kern.c | 9 |
1 files changed, 8 insertions, 1 deletions
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) { /* |