Interrupt threads

Aniruddha Bohra bohra at
Tue Apr 22 14:49:11 PDT 2003

    Reading the implementation of interrupt handling on i386,
and reading Greg Lehey's Usenix paper on FreeBSD 5.0 SMP
implementation, I understand that interrupt handling is done in
process context. This is needed partly to support sleeping while
handling the interrupt because GIANT needs to be locked and
a sleep is possible there.

    My question is after all subsystems that lock giant are made
INTR_MPSAFE will the implementation go back to non-process
context interrupt handling (as in older versions) ?

    Moreover, will the locking be per-IRQ or there will be a
global IRQ lock for ensuring atomic access to the ISRs ?

    Finally why do we need to create a kernel thread for
each IRQ - why can't one kernel thread handle all the
IRQs ?

    Please cc me as I am not subscribed.



More information about the freebsd-questions mailing list