Though a comment in arch/i386/kernel/irq.c: do_IRQ() clearly states:
* 0 return value means that this irq is already being
* handled by some other CPU. (or is disabled)
it seems that the function can only ever return (1). We wrote some low-level
interrupt handling code that depends on the correct value of this function.
Is the following patch what was initially desired? Clearly this code came
from (or vice-versa) arch/i386/kernel/irq.c. I've sent a patch out for that
version to linux-kernel.
Thanks,
William Jhun
Index: arch/mips/kernel/irq.c
===================================================================
RCS file: /cvs/linux/arch/mips/kernel/irq.c,v
retrieving revision 1.38.2.6
diff -c -r1.38.2.6 irq.c
*** arch/mips/kernel/irq.c 2002/05/15 20:41:13 1.38.2.6
--- arch/mips/kernel/irq.c 2002/05/21 00:10:11
***************
*** 488,494 ****
if (softirq_pending(cpu))
do_softirq();
! return 1;
}
/**
--- 488,494 ----
if (softirq_pending(cpu))
do_softirq();
! return (action != NULL);
}
/**
|