summaryrefslogtreecommitdiffstats
path: root/lib/libpthread/thread/thr_kern.c
diff options
context:
space:
mode:
Diffstat (limited to 'lib/libpthread/thread/thr_kern.c')
-rw-r--r--lib/libpthread/thread/thr_kern.c9
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) {
/*
OpenPOWER on IntegriCloud