diff options
Diffstat (limited to 'kernel/sched/idle.c')
| -rw-r--r-- | kernel/sched/idle.c | 23 | 
1 files changed, 7 insertions, 16 deletions
| diff --git a/kernel/sched/idle.c b/kernel/sched/idle.c index 6e78d071beb5..7a105a0123aa 100644 --- a/kernel/sched/idle.c +++ b/kernel/sched/idle.c @@ -450,43 +450,35 @@ static void wakeup_preempt_idle(struct rq *rq, struct task_struct *p, int flags)  	resched_curr(rq);  } -static void put_prev_task_idle(struct rq *rq, struct task_struct *prev) +static void put_prev_task_idle(struct rq *rq, struct task_struct *prev, struct task_struct *next)  { +	dl_server_update_idle_time(rq, prev);  }  static void set_next_task_idle(struct rq *rq, struct task_struct *next, bool first)  {  	update_idle_core(rq);  	schedstat_inc(rq->sched_goidle); +	next->se.exec_start = rq_clock_task(rq);  } -#ifdef CONFIG_SMP -static struct task_struct *pick_task_idle(struct rq *rq) +struct task_struct *pick_task_idle(struct rq *rq)  {  	return rq->idle;  } -#endif - -struct task_struct *pick_next_task_idle(struct rq *rq) -{ -	struct task_struct *next = rq->idle; - -	set_next_task_idle(rq, next, true); - -	return next; -}  /*   * It is not legal to sleep in the idle task - print a warning   * message if some code attempts to do it:   */ -static void +static bool  dequeue_task_idle(struct rq *rq, struct task_struct *p, int flags)  {  	raw_spin_rq_unlock_irq(rq);  	printk(KERN_ERR "bad: scheduling from the idle thread!\n");  	dump_stack();  	raw_spin_rq_lock_irq(rq); +	return true;  }  /* @@ -528,13 +520,12 @@ DEFINE_SCHED_CLASS(idle) = {  	.wakeup_preempt		= wakeup_preempt_idle, -	.pick_next_task		= pick_next_task_idle, +	.pick_task		= pick_task_idle,  	.put_prev_task		= put_prev_task_idle,  	.set_next_task          = set_next_task_idle,  #ifdef CONFIG_SMP  	.balance		= balance_idle, -	.pick_task		= pick_task_idle,  	.select_task_rq		= select_task_rq_idle,  	.set_cpus_allowed	= set_cpus_allowed_common,  #endif | 
