diff options
-rw-r--r-- | lib/libc_r/uthread/uthread_kern.c | 3 | ||||
-rw-r--r-- | lib/libkse/thread/thr_kern.c | 3 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_kern.c | 3 |
3 files changed, 9 insertions, 0 deletions
diff --git a/lib/libc_r/uthread/uthread_kern.c b/lib/libc_r/uthread/uthread_kern.c index 01faece..6f4bb6e 100644 --- a/lib/libc_r/uthread/uthread_kern.c +++ b/lib/libc_r/uthread/uthread_kern.c @@ -90,6 +90,9 @@ _thread_kern_sched_frame(struct pthread_signal_frame *psf) /* Restore the signal frame: */ _thread_sigframe_restore(_thread_run, psf); + /* The signal mask was restored; check for any pending signals: */ + _thread_run->check_pending = 1; + /* Switch to the thread scheduler: */ ___longjmp(_thread_kern_sched_jb, 1); } diff --git a/lib/libkse/thread/thr_kern.c b/lib/libkse/thread/thr_kern.c index 01faece..6f4bb6e 100644 --- a/lib/libkse/thread/thr_kern.c +++ b/lib/libkse/thread/thr_kern.c @@ -90,6 +90,9 @@ _thread_kern_sched_frame(struct pthread_signal_frame *psf) /* Restore the signal frame: */ _thread_sigframe_restore(_thread_run, psf); + /* The signal mask was restored; check for any pending signals: */ + _thread_run->check_pending = 1; + /* Switch to the thread scheduler: */ ___longjmp(_thread_kern_sched_jb, 1); } diff --git a/lib/libpthread/thread/thr_kern.c b/lib/libpthread/thread/thr_kern.c index 01faece..6f4bb6e 100644 --- a/lib/libpthread/thread/thr_kern.c +++ b/lib/libpthread/thread/thr_kern.c @@ -90,6 +90,9 @@ _thread_kern_sched_frame(struct pthread_signal_frame *psf) /* Restore the signal frame: */ _thread_sigframe_restore(_thread_run, psf); + /* The signal mask was restored; check for any pending signals: */ + _thread_run->check_pending = 1; + /* Switch to the thread scheduler: */ ___longjmp(_thread_kern_sched_jb, 1); } |