2016-09-02 21:41 GMT+09:00 Binoy Jayan <[email protected]>: > On 30 August 2016 at 16:20, Masami Hiramatsu > <[email protected]> wrote: >> Hi Binoy, >>> >>> +static inline void trace_latency_hrtimer_mark_ts(struct hrtimer *timer, >>> + struct hrtimer_clock_base >>> *new_base, >>> + ktime_t tim) >>> +{ >>> +#if defined(CONFIG_PREEMPT_TRACER) || defined(CONFIG_IRQSOFF_TRACER) >>> + if (trace_latency_hrtimer_interrupt_enabled()) { >> >> You would better use unlikely() here. >> >>> + ktime_t now = new_base->get_time(); >>> + >>> + if (ktime_to_ns(tim) < ktime_to_ns(now)) >> >> Wouldn't we need to consider the case of wrap around? >> >>> + timer->praecox = now; >>> + else >>> + timer->praecox = ktime_set(0, 0); >>> + } >>> +#endif >>> +} > > Hi Masami, > > I always see these values to be relative and not absolute time. I > found 'praecox' to be always zero during test. > What do you think.
Ah, right. Since "tim" is expire time (timer target), that should always be "now + x" (x is enough larger than how long setting the hrtimer takes). Or, hrtimer expires before finished to set. :) Thank you, -- Masami Hiramatsu

