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.c27
1 files changed, 15 insertions, 12 deletions
diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c
index 80940939b733..54194d41035c 100644
--- a/kernel/sched/idle.c
+++ b/kernel/sched/idle.c
@@ -374,14 +374,25 @@ static void check_preempt_curr_idle(struct rq *rq, struct task_struct *p, int fl
374 resched_curr(rq); 374 resched_curr(rq);
375} 375}
376 376
377static void put_prev_task_idle(struct rq *rq, struct task_struct *prev)
378{
379}
380
381static void set_next_task_idle(struct rq *rq, struct task_struct *next)
382{
383 update_idle_core(rq);
384 schedstat_inc(rq->sched_goidle);
385}
386
377static struct task_struct * 387static struct task_struct *
378pick_next_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf) 388pick_next_task_idle(struct rq *rq, struct task_struct *prev, struct rq_flags *rf)
379{ 389{
390 struct task_struct *next = rq->idle;
391
380 put_prev_task(rq, prev); 392 put_prev_task(rq, prev);
381 update_idle_core(rq); 393 set_next_task_idle(rq, next);
382 schedstat_inc(rq->sched_goidle);
383 394
384 return rq->idle; 395 return next;
385} 396}
386 397
387/* 398/*
@@ -397,10 +408,6 @@ dequeue_task_idle(struct rq *rq, struct task_struct *p, int flags)
397 raw_spin_lock_irq(&rq->lock); 408 raw_spin_lock_irq(&rq->lock);
398} 409}
399 410
400static void put_prev_task_idle(struct rq *rq, struct task_struct *prev)
401{
402}
403
404/* 411/*
405 * scheduler tick hitting a task of our scheduling class. 412 * scheduler tick hitting a task of our scheduling class.
406 * 413 *
@@ -413,10 +420,6 @@ static void task_tick_idle(struct rq *rq, struct task_struct *curr, int queued)
413{ 420{
414} 421}
415 422
416static void set_curr_task_idle(struct rq *rq)
417{
418}
419
420static void switched_to_idle(struct rq *rq, struct task_struct *p) 423static void switched_to_idle(struct rq *rq, struct task_struct *p)
421{ 424{
422 BUG(); 425 BUG();
@@ -451,13 +454,13 @@ const struct sched_class idle_sched_class = {
451 454
452 .pick_next_task = pick_next_task_idle, 455 .pick_next_task = pick_next_task_idle,
453 .put_prev_task = put_prev_task_idle, 456 .put_prev_task = put_prev_task_idle,
457 .set_next_task = set_next_task_idle,
454 458
455#ifdef CONFIG_SMP 459#ifdef CONFIG_SMP
456 .select_task_rq = select_task_rq_idle, 460 .select_task_rq = select_task_rq_idle,
457 .set_cpus_allowed = set_cpus_allowed_common, 461 .set_cpus_allowed = set_cpus_allowed_common,
458#endif 462#endif
459 463
460 .set_curr_task = set_curr_task_idle,
461 .task_tick = task_tick_idle, 464 .task_tick = task_tick_idle,
462 465
463 .get_rr_interval = get_rr_interval_idle, 466 .get_rr_interval = get_rr_interval_idle,