Messages in this thread | | | Date | Wed, 21 Apr 2010 11:28:07 -0600 | From | Jonathan Corbet <> | Subject | Re: Threaded irq handler question |
| |
On Wed, 21 Apr 2010 17:35:32 +0100 Will Newton <will.newton@gmail.com> wrote:
> My problem is that this structure does not work, because once I call > disable_irq_nosync() on the irq in the check handler the thread will > no longer run because the irq is disabled. However if I don't call > disable_irq_nosync() I will get endless irqs because the line is > level-triggered and will not be deasserted until the thread has run.
Trying to disable IRQs at this level is the wrong approach. You need to do enough in the primary interrupt handler to cause the hardware to stop interrupting in the first place; usually that's just a matter of some sort of acknowledgment. Then the threaded handler can move data around in peace.
jon
| |