Commit 98c2f700 authored by Peter Zijlstra's avatar Peter Zijlstra Committed by Ingo Molnar
Browse files

sched/core: Simplify sched_class::pick_next_task()



Now that the indirect class call never uses the last two arguments of
pick_next_task(), remove them.

Signed-off-by: default avatarPeter Zijlstra (Intel) <peterz@infradead.org>
Cc: Linus Torvalds <torvalds@linux-foundation.org>
Cc: Peter Zijlstra <peterz@infradead.org>
Cc: Thomas Gleixner <tglx@linutronix.de>
Cc: bsegall@google.com
Cc: dietmar.eggemann@arm.com
Cc: juri.lelli@redhat.com
Cc: ktkhai@virtuozzo.com
Cc: mgorman@suse.de
Cc: qais.yousef@arm.com
Cc: qperret@google.com
Cc: rostedt@goodmis.org
Cc: valentin.schneider@arm.com
Cc: vincent.guittot@linaro.org
Link: https://lkml.kernel.org/r/20191108131909.660595546@infradead.org


Signed-off-by: default avatarIngo Molnar <mingo@kernel.org>
parent 5d7d6056
Loading
Loading
Loading
Loading
+3 −3
Original line number Original line Diff line number Diff line
@@ -3924,7 +3924,7 @@ pick_next_task(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
		/* Assumes fair_sched_class->next == idle_sched_class */
		/* Assumes fair_sched_class->next == idle_sched_class */
		if (!p) {
		if (!p) {
			put_prev_task(rq, prev);
			put_prev_task(rq, prev);
			p = pick_next_task_idle(rq, NULL, NULL);
			p = pick_next_task_idle(rq);
		}
		}


		return p;
		return p;
@@ -3949,7 +3949,7 @@ restart:
	put_prev_task(rq, prev);
	put_prev_task(rq, prev);


	for_each_class(class) {
	for_each_class(class) {
		p = class->pick_next_task(rq, NULL, NULL);
		p = class->pick_next_task(rq);
		if (p)
		if (p)
			return p;
			return p;
	}
	}
@@ -6210,7 +6210,7 @@ static struct task_struct *__pick_migrate_task(struct rq *rq)
	struct task_struct *next;
	struct task_struct *next;


	for_each_class(class) {
	for_each_class(class) {
		next = class->pick_next_task(rq, NULL, NULL);
		next = class->pick_next_task(rq);
		if (next) {
		if (next) {
			next->sched_class->put_prev_task(rq, next);
			next->sched_class->put_prev_task(rq, next);
			return next;
			return next;
+1 −4
Original line number Original line Diff line number Diff line
@@ -1770,15 +1770,12 @@ static struct sched_dl_entity *pick_next_dl_entity(struct rq *rq,
	return rb_entry(left, struct sched_dl_entity, rb_node);
	return rb_entry(left, struct sched_dl_entity, rb_node);
}
}


static struct task_struct *
static struct task_struct *pick_next_task_dl(struct rq *rq)
pick_next_task_dl(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
{
{
	struct sched_dl_entity *dl_se;
	struct sched_dl_entity *dl_se;
	struct dl_rq *dl_rq = &rq->dl;
	struct dl_rq *dl_rq = &rq->dl;
	struct task_struct *p;
	struct task_struct *p;


	WARN_ON_ONCE(prev || rf);

	if (!sched_dl_runnable(rq))
	if (!sched_dl_runnable(rq))
		return NULL;
		return NULL;


+6 −1
Original line number Original line Diff line number Diff line
@@ -6755,6 +6755,11 @@ idle:
	return NULL;
	return NULL;
}
}


static struct task_struct *__pick_next_task_fair(struct rq *rq)
{
	return pick_next_task_fair(rq, NULL, NULL);
}

/*
/*
 * Account for a descheduled task:
 * Account for a descheduled task:
 */
 */
@@ -10622,7 +10627,7 @@ const struct sched_class fair_sched_class = {


	.check_preempt_curr	= check_preempt_wakeup,
	.check_preempt_curr	= check_preempt_wakeup,


	.pick_next_task		= pick_next_task_fair,
	.pick_next_task		= __pick_next_task_fair,
	.put_prev_task		= put_prev_task_fair,
	.put_prev_task		= put_prev_task_fair,
	.set_next_task          = set_next_task_fair,
	.set_next_task          = set_next_task_fair,


+1 −4
Original line number Original line Diff line number Diff line
@@ -391,13 +391,10 @@ static void set_next_task_idle(struct rq *rq, struct task_struct *next)
	schedstat_inc(rq->sched_goidle);
	schedstat_inc(rq->sched_goidle);
}
}


struct task_struct *
struct task_struct *pick_next_task_idle(struct rq *rq)
pick_next_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
{
{
	struct task_struct *next = rq->idle;
	struct task_struct *next = rq->idle;


	WARN_ON_ONCE(prev || rf);

	set_next_task_idle(rq, next);
	set_next_task_idle(rq, next);


	return next;
	return next;
+1 −4
Original line number Original line Diff line number Diff line
@@ -1564,13 +1564,10 @@ static struct task_struct *_pick_next_task_rt(struct rq *rq)
	return rt_task_of(rt_se);
	return rt_task_of(rt_se);
}
}


static struct task_struct *
static struct task_struct *pick_next_task_rt(struct rq *rq)
pick_next_task_rt(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
{
{
	struct task_struct *p;
	struct task_struct *p;


	WARN_ON_ONCE(prev || rf);

	if (!sched_rt_runnable(rq))
	if (!sched_rt_runnable(rq))
		return NULL;
		return NULL;


Loading