summaryrefslogtreecommitdiffstats
path: root/kernel/sched/idle.c
diff options
context:
space:
mode:
Diffstat (limited to 'kernel/sched/idle.c')
-rw-r--r--kernel/sched/idle.c31
1 files changed, 18 insertions, 13 deletions
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index e4bc4aa739b8..8bfeb6395bdd 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -375,14 +375,27 @@ static void check_preempt_curr_idle(struct rq *rq, struct task_struct *p, int fl
375 resched_curr(rq); 375 resched_curr(rq);
376} 376}
377 377
378static struct task_struct * 378static void put_prev_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
379pick_next_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) 379{
380}
381
382static void set_next_task_idle(struct rq *rq, struct task_struct *next)
380{ 383{
381 put_prev_task(rq, prev);
382 update_idle_core(rq); 384 update_idle_core(rq);
383 schedstat_inc(rq->sched_goidle); 385 schedstat_inc(rq->sched_goidle);
386}
387
388static struct task_struct *
389pick_next_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
390{
391 struct task_struct *next = rq->idle;
392
393 if (prev)
394 put_prev_task(rq, prev);
395
396 set_next_task_idle(rq, next);
384 397
385 return rq->idle; 398 return next;
386} 399}
387 400
388/* 401/*
@@ -398,10 +411,6 @@ dequeue_task_idle(struct rq *rq, struct task_struct *p, int flags)
398 raw_spin_lock_irq(&rq->lock); 411 raw_spin_lock_irq(&rq->lock);
399} 412}
400 413
401static void put_prev_task_idle(struct rq *rq, struct task_struct *prev)
402{
403}
404
405/* 414/*
406 * scheduler tick hitting a task of our scheduling class. 415 * scheduler tick hitting a task of our scheduling class.
407 * 416 *
@@ -414,10 +423,6 @@ static void task_tick_idle(struct rq *rq, struct task_struct *curr, int queued)
414{ 423{
415} 424}
416 425
417static void set_curr_task_idle(struct rq *rq)
418{
419}
420
421static void switched_to_idle(struct rq *rq, struct task_struct *p) 426static void switched_to_idle(struct rq *rq, struct task_struct *p)
422{ 427{
423 BUG(); 428 BUG();
@@ -452,13 +457,13 @@ const struct sched_class idle_sched_class = {
452 457
453 .pick_next_task = pick_next_task_idle, 458 .pick_next_task = pick_next_task_idle,
454 .put_prev_task = put_prev_task_idle, 459 .put_prev_task = put_prev_task_idle,
460 .set_next_task = set_next_task_idle,
455 461
456#ifdef CONFIG_SMP 462#ifdef CONFIG_SMP
457 .select_task_rq = select_task_rq_idle, 463 .select_task_rq = select_task_rq_idle,
458 .set_cpus_allowed = set_cpus_allowed_common, 464 .set_cpus_allowed = set_cpus_allowed_common,
459#endif 465#endif
460 466
461 .set_curr_task = set_curr_task_idle,
462 .task_tick = task_tick_idle, 467 .task_tick = task_tick_idle,
463 468
464 .get_rr_interval = get_rr_interval_idle, 469 .get_rr_interval = get_rr_interval_idle,