On Sun, 2005-11-27 at 13:12 -0800, Mark Knecht wrote:
Sorry, but while this is correct at the software level
it is,
unfortunately, completely incorrect at the hardware level. While I am
not a programmer and do not know myself how to do it, if I write (as
an example only) an ISR that simply turns off interrupts and goes into
a loop, then since interrupts are off no other interrupt will get
through and since the ISR is in a loop it will never return. The
machine is locked and you're hung.
While I do not suggest that this example is anything other than
pathological, it demonstrates the problem.
It does not demonstrate a real world problem. If this were to happen it
would be a grave kernel bug.
In the Linux kernel only drivers that register their ISR with
SA_INTERRUPT block out ALL other interrupts until they complete.
Currently the ALSA drivers and system timer do this as the handling of
those interrupts has RT constraints, and the handlers execute quickly
anyway.
Lee