Linux对电平触发与沿触发中断的区别(二)

2014-11-24 08:12:45 · 作者: · 浏览: 8
dle_edge_irq处理电平触发中断的情况,下面分析一下出现这两种错误时的现象:


使用handle_level_irq处理沿触发中断


由于handle_level_irq中调用了mask,直到中断处理完成之后才调用unmask,在这期间不会响应新的中断,所以沿触发的中断在这个过程中会丢失。


使用handle_edge_irq处理电平触发中断


handle_edge_irq不会调用mask,所以在调用handle_IRQ_event时,如果重新打开中断,就会进入嵌套。嵌套过程中会调用mask,禁止第二次嵌套出现,同时设置IRQ_PENDING标记。等到handle_IRQ_event返回时,由于那个IRQ_PENDING的存在,会再一次调用handle_IRQ_event,导致效率降低。