aboutsummaryrefslogtreecommitdiffstats
path: root/kernel/sched_rt.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched_rt.c')
-rw-r--r--kernel/sched_rt.c28
1 files changed, 19 insertions, 9 deletions
diff --git a/kernel/sched_rt.c b/kernel/sched_rt.c
index d0097a0634e5..e9395b7119e6 100644
--- a/kernel/sched_rt.c
+++ b/kernel/sched_rt.c
@@ -172,13 +172,11 @@ static struct task_struct *load_balance_next_rt(void *arg)
172 172
173static unsigned long 173static unsigned long
174load_balance_rt(struct rq *this_rq, int this_cpu, struct rq *busiest, 174load_balance_rt(struct rq *this_rq, int this_cpu, struct rq *busiest,
175 unsigned long max_nr_move, unsigned long max_load_move, 175 unsigned long max_load_move,
176 struct sched_domain *sd, enum cpu_idle_type idle, 176 struct sched_domain *sd, enum cpu_idle_type idle,
177 int *all_pinned, int *this_best_prio) 177 int *all_pinned, int *this_best_prio)
178{ 178{
179 int nr_moved;
180 struct rq_iterator rt_rq_iterator; 179 struct rq_iterator rt_rq_iterator;
181 unsigned long load_moved;
182 180
183 rt_rq_iterator.start = load_balance_start_rt; 181 rt_rq_iterator.start = load_balance_start_rt;
184 rt_rq_iterator.next = load_balance_next_rt; 182 rt_rq_iterator.next = load_balance_next_rt;
@@ -187,11 +185,22 @@ load_balance_rt(struct rq *this_rq, int this_cpu, struct rq *busiest,
187 */ 185 */
188 rt_rq_iterator.arg = busiest; 186 rt_rq_iterator.arg = busiest;
189 187
190 nr_moved = balance_tasks(this_rq, this_cpu, busiest, max_nr_move, 188 return balance_tasks(this_rq, this_cpu, busiest, max_load_move, sd,
191 max_load_move, sd, idle, all_pinned, &load_moved, 189 idle, all_pinned, this_best_prio, &rt_rq_iterator);
192 this_best_prio, &rt_rq_iterator); 190}
191
192static int
193move_one_task_rt(struct rq *this_rq, int this_cpu, struct rq *busiest,
194 struct sched_domain *sd, enum cpu_idle_type idle)
195{
196 struct rq_iterator rt_rq_iterator;
197
198 rt_rq_iterator.start = load_balance_start_rt;
199 rt_rq_iterator.next = load_balance_next_rt;
200 rt_rq_iterator.arg = busiest;
193 201
194 return load_moved; 202 return iter_move_one_task(this_rq, this_cpu, busiest, sd, idle,
203 &rt_rq_iterator);
195} 204}
196 205
197static void task_tick_rt(struct rq *rq, struct task_struct *p) 206static void task_tick_rt(struct rq *rq, struct task_struct *p)
@@ -237,6 +246,7 @@ const struct sched_class rt_sched_class = {
237 .put_prev_task = put_prev_task_rt, 246 .put_prev_task = put_prev_task_rt,
238 247
239 .load_balance = load_balance_rt, 248 .load_balance = load_balance_rt,
249 .move_one_task = move_one_task_rt,
240 250
241 .set_curr_task = set_curr_task_rt, 251 .set_curr_task = set_curr_task_rt,
242 .task_tick = task_tick_rt, 252 .task_tick = task_tick_rt,