Hi,

Was wondering if I did not frame my question appropriately? Or it there a 
better place to discuss this?

Thanks,

Rajat

> 
> This is regarding the following code in kernel/irq/handle.c. Consider
> the case of a shared IRQ line, where two handlers are registered such
> that first handler does not specify IRQF_DISABLED, but the second one
> does. But it seems both the handlers will be called IRQs ENABLED
> (which is certainly not what the second handler expects).    
> 
> I also checked but could not find anything that stops me from
> registering two shared ISRs - one with IRQF_DISABLED & another
> without this flag. Am I missing something here?  
> 
> irqreturn_t handle_IRQ_event(unsigned int irq, struct irqaction
> *action) {
>     irqreturn_t ret, retval = IRQ_NONE;
>     unsigned int status = 0;
> 
>     handle_dynamic_tick(action);
> 
>     if (!(action->flags & IRQF_DISABLED))
>         local_irq_enable_in_hardirq();
> 
>     do {
>         ret = action->handler(irq, action->dev_id);
>         if (ret == IRQ_HANDLED)
>             status |= action->flags;
>         retval |= ret;
>         action = action->next;
>     } while (action);
> 
>     if (status & IRQF_SAMPLE_RANDOM)
>         add_interrupt_randomness(irq);
>     local_irq_disable();
> 
>     return retval;
> }
> 
> Thanks,
> 
> Rajat

-
To unsubscribe from this list: send the line "unsubscribe linux-newbie" in
the body of a message to [EMAIL PROTECTED]
More majordomo info at  http://vger.kernel.org/majordomo-info.html
Please read the FAQ at http://www.linux-learn.org/faqs

Reply via email to