Message ID | 20160805143444.GH28125@e106622-lin |
---|---|
State | New |
Headers | show |
On 05/08/16 10:54, Steven Rostedt wrote: > On Fri, 5 Aug 2016 15:34:44 +0100 > Juri Lelli <juri.lelli@arm.com> wrote: > > > On 05/08/16 09:56, Steven Rostedt wrote: > > > On Fri, 5 Aug 2016 11:09:59 +0100 > > > Juri Lelli <juri.lelli@arm.com> wrote: > > > > > > > @@ -1720,19 +1720,28 @@ static void switched_from_dl(struct rq *rq, struct task_struct *p) > > > > */ > > > > static void switched_to_dl(struct rq *rq, struct task_struct *p) > > > > { > > > > - if (dl_time_before(p->dl.deadline, rq_clock(rq))) > > > > - setup_new_dl_entity(&p->dl, &p->dl); > > > > > > > > - if (task_on_rq_queued(p) && rq->curr != p) { > > > > + if (task_on_rq_queued(p)) { > > > > > > I always hated functions totally encapsulated by an if statement. This > > > can be a bit simpler (and less indented) if you have: > > > > > > /* If p is not queued, its parameters will be updated at wakeup */ > > > if (!task_on_rq_queued(p)) > > > return; > > > > > > [...] > > > > > > > You mean like what follows? > > > > I'll post a v6 if OK. > > > > Yes! I think that looks much nicer, and easier to read. > Yep. Way better. :) > You can add my Reviewed-by tag too. > Thanks! Best, - Juri
diff --git a/kernel/sched/deadline.c b/kernel/sched/deadline.c index 9491dbe039e8..03f35f66cf1f 100644 --- a/kernel/sched/deadline.c +++ b/kernel/sched/deadline.c @@ -1721,27 +1721,28 @@ static void switched_from_dl(struct rq *rq, struct task_struct *p) static void switched_to_dl(struct rq *rq, struct task_struct *p) { - if (task_on_rq_queued(p)) { - /* - * If p is not queued we will update its parameters at next - * wakeup. If p is dl_boosted we already updated its params in - * rt_mutex_setprio()->enqueue_task(..., ENQUEUE_REPLENISH), - * p's deadline being now already after rq_clock(rq). - */ - if (dl_time_before(p->dl.deadline, rq_clock(rq))) - setup_new_dl_entity(&p->dl); + /* If p is not queued we will update its parameters at next wakeup. */ + if (!task_on_rq_queued(p)) + return; + + /* + * If p is boosted we already updated its params in + * rt_mutex_setprio()->enqueue_task(..., ENQUEUE_REPLENISH), + * p's deadline being now already after rq_clock(rq). + */ + if (dl_time_before(p->dl.deadline, rq_clock(rq))) + setup_new_dl_entity(&p->dl); - if (rq->curr != p) { + if (rq->curr != p) { #ifdef CONFIG_SMP - if (tsk_nr_cpus_allowed(p) > 1 && rq->dl.overloaded) - queue_push_tasks(rq); + if (tsk_nr_cpus_allowed(p) > 1 && rq->dl.overloaded) + queue_push_tasks(rq); #else - if (dl_task(rq->curr)) - check_preempt_curr_dl(rq, p, 0); - else - resched_curr(rq); + if (dl_task(rq->curr)) + check_preempt_curr_dl(rq, p, 0); + else + resched_curr(rq); #endif - } } }