summaryrefslogtreecommitdiff
path: root/sys/kern/sched_4bsd.c
diff options
context:
space:
mode:
authorJeff Roberson <jeff@FreeBSD.org>2008-03-12 06:31:06 +0000
committerJeff Roberson <jeff@FreeBSD.org>2008-03-12 06:31:06 +0000
commitc5aa6b581d3bb4c466526bc0144c0e56ee852901 (patch)
tree20ec4b3ab190fc07828f6c3f536e039ecdead59a /sys/kern/sched_4bsd.c
parentdf4691b98481b2379d249c3e4bb094b445e9196c (diff)
Notes
Diffstat (limited to 'sys/kern/sched_4bsd.c')
-rw-r--r--sys/kern/sched_4bsd.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/sys/kern/sched_4bsd.c b/sys/kern/sched_4bsd.c
index 834788c2faa8..0232e09be0cd 100644
--- a/sys/kern/sched_4bsd.c
+++ b/sys/kern/sched_4bsd.c
@@ -799,12 +799,16 @@ sched_unlend_user_prio(struct thread *td, u_char prio)
}
void
-sched_sleep(struct thread *td)
+sched_sleep(struct thread *td, int pri)
{
THREAD_LOCK_ASSERT(td, MA_OWNED);
td->td_slptick = ticks;
td->td_sched->ts_slptime = 0;
+ if (pri)
+ sched_prio(td, pri);
+ if (TD_IS_SUSPENDED(td) || pri <= PSOCK)
+ td->td_flags |= TDF_CANSWAP;
}
void
@@ -922,6 +926,7 @@ sched_wakeup(struct thread *td)
THREAD_LOCK_ASSERT(td, MA_OWNED);
ts = td->td_sched;
+ td->td_flags &= ~TDF_CANSWAP;
if (ts->ts_slptime > 1) {
updatepri(td);
resetpriority(td);