About interrupt handler
Dave Hylands
dhylands at gmail.com
Sun Feb 26 12:53:06 EST 2012
Hi Kosta,
On Sun, Feb 26, 2012 at 4:11 AM, Kosta Zertsekel <zertsekel at gmail.com> wrote:
> On Fri, Feb 24, 2012 at 11:18 PM, Dave Hylands <dhylands at gmail.com> wrote:
>> HI Kosta,
>>
>> On Fri, Feb 24, 2012 at 1:08 PM, Dave Hylands <dhylands at gmail.com> wrote:
>>> Hi Kosta,
>>>
>>> On Fri, Feb 24, 2012 at 1:19 AM, Kosta Zertsekel <zertsekel at gmail.com> wrote:
>>>>>> I'm begin to learn the Kernel and i'm reading <<Linux kernel
>>>>>> development>>.It says "This is an important point, always keep in mind that
>>>>>> all interrupt handler has interrupted other code(possibly even another
>>>>>> interrupt handler on a different line)".What i am not able to understand is
>>>>>> how a interrupt handler be interrupted ? DID NOT it uninterrupted?
>>>>>
>>>>> It depends on the architecture and the interrupt controller being
>>>>> used, and the driver code itself.
>>>>>
>>>>> Normally, when an interrupt fires, that particular interrupt will be
>>>>> masked and your own handler won't interrupt itself, but you may very
>>>>> well be interrupted by other interrupts.
>>>>
>>>> Can you please point out some code for explanation?
>>>
>>> Could you be a bit more specific about what example you're looking for?
>>
>> I also believe that things have changed (since I looked at this in any
>> detail). It seems that interrupts are now run with other interrupts
>> disabled.
>> See: http://lwn.net/Articles/364583/ and look at the IRQF_DISABLED discussion.
>
> Oh, yes, it seems it does as of kernel 3.3.0. But I fail to accept the
> argument...
> What happens for NAPI drivers stalling the kernel - *nobody* can
> interrupt them...
> Is there some reliable IRQ deep dive explanation - I need one just to
> wrap my mind over the issue?
Well the kernel has the ability to use threaded irqs. This allows IRQs
to be given a proirity so you can allow one interrupt to interrupt
another or to even allow threads to interrupt interrupts.
http://lwn.net/Articles/302043/
http://www.artist-embedded.org/docs/Events/2009/OSPERT/OSPERT09-Henriques.pdf
http://elinux.org/images/e/ef/InterruptThreads-Slides_Anderson.pdf
--
Dave Hylands
Shuswap, BC, Canada
http://www.davehylands.com
More information about the Kernelnewbies
mailing list