On Tue, 2007-04-10 at 14:34 +0200, Pieter Palmers wrote:
I'm also wondering why/whether threaded IRQ's
can't be software-demuxed
in the kernel. A very basic interrupt handler like this:
handle_irq() {
switch(irq_source) {
case HDA:
set_my_prio(high);
hda_handle_irq();
case 1394:
set_my_prio(low);
1394_handle_irq();
}
}
Ingo's threaded IRQ stuff does something like this, but I don't quite
know the details of it. I'm under the impression that it allows setting
the priority of the 'handle_irq()' but not of the dispatched IRQ handlers.
yes, thats correct. the priority of the IRQ itself is based in h/w, and
is not affected by the scheduling class or priority of the kernel task
that runs the *_handle_irq(). the point of ingo's changes are that
*_handle_irq() runs in a dedicated task/thread per IRQ at a (relatively)
fixed priority.