Event timers

Andriy Gapon avg at freebsd.org
Mon May 24 16:33:15 UTC 2010


on 24/05/2010 18:57 Alexander Motin said the following:
> I have defined several points on that way:
> 1*. clean low-level timer drivers from unrelated stuff,
> 2*. make some common code machine-independent,
> 3. write common driver API for event timers (alike to one we have now
> for time counters) to make adding more drivers possible,
> 4. add support for HPET as event timer in addition to time counter,
> 5. add support for timers in one-shot mode (LAPIC and HPET).

Alexander,

I wonder how much you have progressed for 3,4,5.
I have some low level code for 4.

Some additional things that could be useful:
a. It would be nice to replace special handling of NULL as interrupt arg with
something more convenient.  Right now if interrupt arg is NULL then a pointer to
an interrupted frame is passed to interrupt handler.  This is used by clock
interrupt handlers.  It would be good to be able to pass both frame pointer and
some context to handler.  jhb suggested that frame pointer could be passed via
struct thread.
b. On some x86 systems it is possible to broadcast APIC interrupts to all CPUs
by using broadcast ID (0xFF) instead of a specific CPU ID.  This could be used
to avoid IPI overhead.

I have some code for b.

-- 
Andriy Gapon


More information about the freebsd-arch mailing list