ARM-Linux 中断处理过程---图解中断处理过程

3077阅读 0评论2011-04-05 zjh_larm
分类:LINUX

下面用一幅图来介绍中断来了后的函数调用过程。

 

 IRQ中断来了

     |

     |

中断向量入口,跳转到中断处理程序 

     |

     |

  是否内核态------Irq_usr

     |            |       

     |            |

     get_irqnr_and_base

           获取中断号

     asm_do_IRQ 处理中断

 

 

注意:内核态的中断处理和用户态的中断处理都是调用了asm_do_IRQ来处理中断,不同点在于中断返回时的处理。Irq_usr判断是否有进程抢占和待处理信号。但

Irq_svc只判断是否需要调度,因为它要尽快返回内核态。

 

asm_do_IRQ irq

 

获取irq对应的struct irqdesc结构体

     |

     |

(Irq_desc+irq)->handle_irq

     |

     |

循环调用

desc->action->handle,

也就是依次调用注册在该中断上的处理函数。

    

上一篇:ARM-Linux 中断处理过程---函数介绍
下一篇:ARM-Linux 中断处理过程---系统和用户要做的