summaryrefslogtreecommitdiff
path: root/usr/src/uts/common/os/sig.c
diff options
context:
space:
mode:
authorakolb <none@none>2007-03-09 15:55:28 -0800
committerakolb <none@none>2007-03-09 15:55:28 -0800
commitc97ad5cdc75eb73e3cc38542ca3ba783574b0a7a (patch)
tree5ba1653d892978d87d6061c8c7f3821f4b3e354c /usr/src/uts/common/os/sig.c
parent68d3ac02fc9db49ae9dccaecff999963114930a7 (diff)
downloadillumos-joyent-c97ad5cdc75eb73e3cc38542ca3ba783574b0a7a.tar.gz
PSARC/2004/402 CPU Caps
6327235 PSARC/2004/402 CPU caps 6464161 Dead KSLICE code should be removed 6514387 FX class contains dead code to keep list of member threads 6518395 kstat_zone_add performs KM_SLEEP allocation when it should not
Diffstat (limited to 'usr/src/uts/common/os/sig.c')
-rw-r--r--usr/src/uts/common/os/sig.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/usr/src/uts/common/os/sig.c b/usr/src/uts/common/os/sig.c
index 808e5d2095..5c72fb749b 100644
--- a/usr/src/uts/common/os/sig.c
+++ b/usr/src/uts/common/os/sig.c
@@ -181,7 +181,7 @@ eat_signal(kthread_t *t, int sig)
*/
if (!signal_is_blocked(t, sig)) {
t->t_sig_check = 1; /* have thread do an issig */
- if (t->t_state == TS_SLEEP && (t->t_flag & T_WAKEABLE)) {
+ if (ISWAKEABLE(t) || ISWAITING(t)) {
setrun_locked(t);
rval = 1;
} else if (t->t_state == TS_STOPPED && sig == SIGKILL &&
@@ -974,6 +974,11 @@ stop(int why, int what)
notify = 1;
}
}
+
+ /* Move waiting thread to run queue */
+ if (ISWAITING(tx))
+ setrun_locked(tx);
+
/*
* force the thread into the kernel
* if it is not already there.