| From | Jan H. Schönherr <> | Subject | [RFC 07/60] sched: Reduce dependencies of init_tg_cfs_entry() | Date | Fri, 7 Sep 2018 23:39:54 +0200 |
| |
Decouple init_tg_cfs_entry() from other structures' implementation details, so that it only updates/accesses task group related fields of the CFS runqueue and its SE.
This prepares calling this function in slightly different contexts.
Signed-off-by: Jan H. Schönherr <jschoenh@amazon.de> --- kernel/sched/core.c | 3 ++- kernel/sched/fair.c | 13 +++++-------- kernel/sched/sched.h | 4 ++-- 3 files changed, 9 insertions(+), 11 deletions(-)
diff --git a/kernel/sched/core.c b/kernel/sched/core.c index c38a54f57e90..48e37c3baed1 100644 --- a/kernel/sched/core.c +++ b/kernel/sched/core.c @@ -6019,7 +6019,8 @@ void __init sched_init(void) * directly in rq->cfs (i.e root_task_group->se[] = NULL). */ init_cfs_bandwidth(&root_task_group.cfs_bandwidth); - init_tg_cfs_entry(&root_task_group, &rq->cfs, NULL, i, NULL); + root_task_group.cfs_rq[i] = &rq->cfs; + init_tg_cfs_entry(&root_task_group, &rq->cfs, NULL, rq, NULL); #endif /* CONFIG_FAIR_GROUP_SCHED */ rq->rt.rt_runtime = def_rt_bandwidth.rt_runtime; diff --git a/kernel/sched/fair.c b/kernel/sched/fair.c index 3de0158729a6..c0dd5825556c 100644 --- a/kernel/sched/fair.c +++ b/kernel/sched/fair.c @@ -9843,8 +9843,9 @@ int alloc_fair_sched_group(struct task_group *tg, struct task_group *parent) if (!se) goto err_free_rq; + tg->cfs_rq[i] = cfs_rq; init_cfs_rq(cfs_rq); - init_tg_cfs_entry(tg, cfs_rq, se, i, parent->cfs_rq[i]); + init_tg_cfs_entry(tg, cfs_rq, se, cpu_rq(i), parent->cfs_rq[i]); init_entity_runnable_average(se); } @@ -9900,17 +9901,13 @@ void unregister_fair_sched_group(struct task_group *tg) } void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq, - struct sched_entity *se, int cpu, - struct cfs_rq *parent) + struct sched_entity *se, struct rq *rq, + struct cfs_rq *parent) { - struct rq *rq = cpu_rq(cpu); - cfs_rq->tg = tg; cfs_rq->rq = rq; - init_cfs_rq_runtime(cfs_rq); - - tg->cfs_rq[cpu] = cfs_rq; cfs_rq->my_se = se; + init_cfs_rq_runtime(cfs_rq); /* se could be NULL for root_task_group */ if (!se) diff --git a/kernel/sched/sched.h b/kernel/sched/sched.h index 926a26d816a2..b8c8dfd0e88d 100644 --- a/kernel/sched/sched.h +++ b/kernel/sched/sched.h @@ -427,8 +427,8 @@ extern int alloc_fair_sched_group(struct task_group *tg, struct task_group *pare extern void online_fair_sched_group(struct task_group *tg); extern void unregister_fair_sched_group(struct task_group *tg); extern void init_tg_cfs_entry(struct task_group *tg, struct cfs_rq *cfs_rq, - struct sched_entity *se, int cpu, - struct cfs_rq *parent); + struct sched_entity *se, struct rq *rq, + struct cfs_rq *parent); extern void init_cfs_bandwidth(struct cfs_bandwidth *cfs_b); extern void __refill_cfs_bandwidth_runtime(struct cfs_bandwidth *cfs_b); -- 2.9.3.1.gcba166c.dirty
|