aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched_fair.c
diff options
context:
space:
mode:
authorPeter Zijlstra <a.p.zijlstra@chello.nl>2009-09-10 07:42:00 -0400
committerIngo Molnar <mingo@elte.hu>2009-09-15 10:01:04 -0400
commit5f3edc1b1ead6d9bd45a85c551f44eff8fe76b9f (patch)
tree46f987010ca017be945831b76d8ea846f1ba8fc9 /kernel/sched_fair.c
parentaaee1203ca52b9db799433c33c9bffc33cdf8909 (diff)
sched: Hook sched_balance_self() into sched_class::select_task_rq()
Rather ugly patch to fully place the sched_balance_self() code inside the fair class. Signed-off-by: Peter Zijlstra <a.p.zijlstra@chello.nl> LKML-Reference: <new-submission> Signed-off-by: Ingo Molnar <mingo@elte.hu>
Diffstat (limited to 'kernel/sched_fair.c')
-rw-r--r--kernel/sched_fair.c7
1 files changed, 6 insertions, 1 deletions
diff --git a/kernel/sched_fair.c b/kernel/sched_fair.c
index a82d71d3afed..f2eb5b934715 100644
--- a/kernel/sched_fair.c
+++ b/kernel/sched_fair.c
@@ -1300,7 +1300,9 @@ wake_affine(struct sched_domain *this_sd, struct rq *this_rq,
1300 return 0; 1300 return 0;
1301} 1301}
1302 1302
1303static int select_task_rq_fair(struct task_struct *p, int sync) 1303static int sched_balance_self(int cpu, int flag);
1304
1305static int select_task_rq_fair(struct task_struct *p, int flag, int sync)
1304{ 1306{
1305 struct sched_domain *sd, *this_sd = NULL; 1307 struct sched_domain *sd, *this_sd = NULL;
1306 int prev_cpu, this_cpu, new_cpu; 1308 int prev_cpu, this_cpu, new_cpu;
@@ -1314,6 +1316,9 @@ static int select_task_rq_fair(struct task_struct *p, int sync)
1314 this_rq = cpu_rq(this_cpu); 1316 this_rq = cpu_rq(this_cpu);
1315 new_cpu = prev_cpu; 1317 new_cpu = prev_cpu;
1316 1318
1319 if (flag != SD_BALANCE_WAKE)
1320 return sched_balance_self(this_cpu, flag);
1321
1317 /* 1322 /*
1318 * 'this_sd' is the first domain that both 1323 * 'this_sd' is the first domain that both
1319 * this_cpu and prev_cpu are present in: 1324 * this_cpu and prev_cpu are present in: