- 论坛徽章:
- 0
|
asm_do_irq==>hanle_level_irq==>handle_IRQ_event中断处理函数:
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;
}
这里local_irq_disable(),为什么在退出中断时候还需要关闭CPU中断?
linux进入中断时候,是不是默认CPU中断禁止? |
|