Hi Peter,

On Tue, 5 Apr 2016 14:42:18 +0200
Peter Zijlstra <[email protected]> wrote:

> On Fri, Apr 01, 2016 at 05:12:29PM +0200, Luca Abeni wrote:
> > +static void task_go_inactive(struct task_struct *p)
> > +{
> > +   struct sched_dl_entity *dl_se = &p->dl;
> > +   struct hrtimer *timer = &dl_se->inactive_timer;
> > +   struct dl_rq *dl_rq = dl_rq_of_se(dl_se);
> > +   struct rq *rq = rq_of_dl_rq(dl_rq);
> > +   ktime_t now, act;
> > +   s64 delta;
> > +   u64 zerolag_time;
> 
>       s64 zerolag_time;
Ok.

[...]
> Would something like:
> 
>       zerolag_time -= rq_clock(rq);
> 
> > +
> > +   /*
> > +    * If the "0-lag time" already passed, decrease the active
> > +    * utilization now, instead of starting a timer
> > +    */
> > +   if (ktime_us_delta(act, now) < 0) {
> 
>       if (zerolag_time < 0)
> 
> > +           sub_running_bw(dl_se, dl_rq);
> > +           if (!dl_task(p))
> > +                   __dl_clear_params(p);
> > +
> > +           return;
> > +   }
> > +
> > +   get_task_struct(p);
> > +   hrtimer_start(timer, act, HRTIMER_MODE_ABS);
> 
>       hrtimer_start(timer, ns_to_ktime(zerolag), HRTIMER_MODE_REL);
> 
> > +}
> 
> Not be simpler ?
I think I blindly copied this code from the deadline timer, but yes,
you are right, I am doing a lot of useless conversions here. I'll fix
this.



                        Thanks,
                                Luca

Reply via email to