summaryrefslogtreecommitdiffstats
path: root/sys/kern/sched_ule.c
diff options
context:
space:
mode:
Diffstat (limited to 'sys/kern/sched_ule.c')
-rw-r--r--sys/kern/sched_ule.c17
1 files changed, 9 insertions, 8 deletions
diff --git a/sys/kern/sched_ule.c b/sys/kern/sched_ule.c
index 71646b6..1045122 100644
--- a/sys/kern/sched_ule.c
+++ b/sys/kern/sched_ule.c
@@ -785,8 +785,10 @@ sched_prio(struct thread *td, u_char prio)
}
void
-sched_switchout(struct thread *td)
+sched_switch(struct thread *td)
{
+ struct thread *newtd;
+ u_int sched_nest;
struct kse *ke;
mtx_assert(&sched_lock, MA_OWNED);
@@ -823,13 +825,12 @@ sched_switchout(struct thread *td)
*/
if (td->td_proc->p_flag & P_SA)
kse_reassign(ke);
-}
-
-void
-sched_switchin(struct thread *td)
-{
- /* struct kse *ke = td->td_kse; */
- mtx_assert(&sched_lock, MA_OWNED);
+ sched_nest = sched_lock.mtx_recurse;
+ newtd = choosethread();
+ if (td != newtd)
+ cpu_switch(td, newtd);
+ sched_lock.mtx_recurse = sched_nest;
+ sched_lock.mtx_lock = (uintptr_t)td;
td->td_oncpu = PCPU_GET(cpuid);
}
OpenPOWER on IntegriCloud