On Tue, Aug 25, 2020 at 11:23:56AM +0200, Kurt Kanzenbach wrote:
> On Mon Aug 24 2020, Vinicius Costa Gomes wrote:
> > Hi,
> >
> > Kurt Kanzenbach <k...@linutronix.de> writes:
> >
> [snip]
> >> +  /* Setup timer for schedule switch: The IP core only allows to set a
> >> +   * cycle start timer 8 seconds in the future. This is why we setup the
> >> +   * hritmer to base_time - 5 seconds. Then, we have enough time to
> >> +   * activate IP core's EST timer.
> >> +   */
> >> +  start = ktime_sub_ns(schedule->base_time, (u64)5 * NSEC_PER_SEC);
> >> +  hrtimer_start_range_ns(&hellcreek_port->cycle_start_timer, start,
> >> +                         NSEC_PER_SEC, HRTIMER_MODE_ABS);
> >
> > If we are talking about seconds here, I don't think you need to use a
> > hrtimer, you could use a workqueue/delayed_work. Should make things a
> > bit simpler.
> 
> I've used hrtimers for one reason: The hrtimer provides a way to fire at
> an absolute base time based on CLOCK_TAI. All the other facilities such
> as workqueues, timer list timers, etc do not.

That still doesn't justify the complexity of irqsave spinlocks and such.
You could just as well schedule a workqueue from that hrtimer and have
process context...

Thanks,
-Vladimir

Reply via email to