On 05/08/16 09:56, Steven Rostedt wrote:
> On Fri,  5 Aug 2016 11:09:59 +0100
> Juri Lelli <[email protected]> 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.

Thanks,

- Juri

--->8---
 kernel/sched/deadline.c | 35 ++++++++++++++++++-----------------
 1 file changed, 18 insertions(+), 17 deletions(-)

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
-               }
        }
 }

Reply via email to