>>>>> "David" == David Mosberger <davidm@napali.hpl.hp.com> writes: >>>>> On Sat, 28 Feb 2004 08:27:40 +1100, Peter Chubb <peter@chubb.wattle.id.au> said: >>>>> "David" == David Mosberger <davidm@napali.hpl.hp.com> writes: Peter> Because IRQs are disabled for every hardware interrupt, and Peter> enabled after each interrupt returns. David> OK, it's been really long since I worked on this, but AFAIR, David> for level-triggered interrupts, there should be no David> masking/unmasking during interrupt delivery. What am I David> missing? Sorry, I should have been more clear. For the user-mode driver, we need to disable the interrupt so that it can be acknowledged to the device in the user-level code after the in-kernel generic interrupt handler has returned. So the sequence goes: Kernel Userspace handler read(irqfd) enable_irq() down(semaphore) do_IRQ desc->handler->ack() desc->action() (= stub_handler()) disable_irq up(semaphore) return IRQ_HANDLED desc->handler->end() return from read() Read device status register Handle interrupt I'm sure I also saw enable_irq() in the profile for the normal in-kernel driver, but I don't know where it comes from, and can't see it now. Peter C - To unsubscribe from this list: send the line "unsubscribe linux-ia64" in the body of a message to majordomo@vger.kernel.org More majordomo info at http://vger.kernel.org/majordomo-info.htmlReceived on Fri Feb 27 23:26:31 2004
This archive was generated by hypermail 2.1.8 : 2005-08-02 09:20:23 EST