next = rq->core_pick;
if (next != prev) {
put_prev_task(rq, prev);
- set_next_task(rq, next);
+ set_next_task_first(rq, next);
}
rq->core_pick = NULL;
}
out_set_next:
- set_next_task(rq, next);
+ set_next_task_first(rq, next);
out:
if (rq->core->core_forceidle_count && next == rq->idle)
queue_core_balance(rq);
next->sched_class->set_next_task(rq, next, false);
}
+static inline void set_next_task_first(struct rq *rq, struct task_struct *next)
+{
+ next->sched_class->set_next_task(rq, next, true);
+}
/*
* Helper to define a sched_class instance; each one is placed in a separate