diff options
author | deischen <deischen@FreeBSD.org> | 2001-06-29 17:09:07 +0000 |
---|---|---|
committer | deischen <deischen@FreeBSD.org> | 2001-06-29 17:09:07 +0000 |
commit | 5cd1eeb5568c1d6e98f172c805b52e5a6eea80bd (patch) | |
tree | b1f24217eca197c95d265752e36773cf443e5e17 /lib | |
parent | d09374546289774e050e84f65ff80b9dbf1764e8 (diff) | |
download | FreeBSD-src-5cd1eeb5568c1d6e98f172c805b52e5a6eea80bd.zip FreeBSD-src-5cd1eeb5568c1d6e98f172c805b52e5a6eea80bd.tar.gz |
Clear the in thread scheduler flag after jumping to the start of
a signal handler from the scheduler.
MFC after: 1 week
Diffstat (limited to 'lib')
-rw-r--r-- | lib/libc_r/uthread/uthread_sig.c | 6 | ||||
-rw-r--r-- | lib/libkse/thread/thr_sig.c | 6 | ||||
-rw-r--r-- | lib/libpthread/thread/thr_sig.c | 6 |
3 files changed, 18 insertions, 0 deletions
diff --git a/lib/libc_r/uthread/uthread_sig.c b/lib/libc_r/uthread/uthread_sig.c index fd5180c..9ca197e 100644 --- a/lib/libc_r/uthread/uthread_sig.c +++ b/lib/libc_r/uthread/uthread_sig.c @@ -932,6 +932,12 @@ _thread_sig_wrapper(void) thread->curframe = NULL; PTHREAD_ASSERT(psf != NULL, "Invalid signal frame in signal handler"); + /* + * We're coming from the kernel scheduler; clear the in + * scheduler flag: + */ + _thread_kern_in_sched = 0; + /* Check the threads previous state: */ if (psf->saved_state.psd_state != PS_RUNNING) { /* diff --git a/lib/libkse/thread/thr_sig.c b/lib/libkse/thread/thr_sig.c index fd5180c..9ca197e 100644 --- a/lib/libkse/thread/thr_sig.c +++ b/lib/libkse/thread/thr_sig.c @@ -932,6 +932,12 @@ _thread_sig_wrapper(void) thread->curframe = NULL; PTHREAD_ASSERT(psf != NULL, "Invalid signal frame in signal handler"); + /* + * We're coming from the kernel scheduler; clear the in + * scheduler flag: + */ + _thread_kern_in_sched = 0; + /* Check the threads previous state: */ if (psf->saved_state.psd_state != PS_RUNNING) { /* diff --git a/lib/libpthread/thread/thr_sig.c b/lib/libpthread/thread/thr_sig.c index fd5180c..9ca197e 100644 --- a/lib/libpthread/thread/thr_sig.c +++ b/lib/libpthread/thread/thr_sig.c @@ -932,6 +932,12 @@ _thread_sig_wrapper(void) thread->curframe = NULL; PTHREAD_ASSERT(psf != NULL, "Invalid signal frame in signal handler"); + /* + * We're coming from the kernel scheduler; clear the in + * scheduler flag: + */ + _thread_kern_in_sched = 0; + /* Check the threads previous state: */ if (psf->saved_state.psd_state != PS_RUNNING) { /* |