diff options
| author | Jeff Roberson <jeff@FreeBSD.org> | 2008-03-12 06:31:06 +0000 |
|---|---|---|
| committer | Jeff Roberson <jeff@FreeBSD.org> | 2008-03-12 06:31:06 +0000 |
| commit | c5aa6b581d3bb4c466526bc0144c0e56ee852901 (patch) | |
| tree | 20ec4b3ab190fc07828f6c3f536e039ecdead59a /sys/kern/sched_4bsd.c | |
| parent | df4691b98481b2379d249c3e4bb094b445e9196c (diff) | |
Notes
Diffstat (limited to 'sys/kern/sched_4bsd.c')
| -rw-r--r-- | sys/kern/sched_4bsd.c | 7 |
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); |
