深入剖析Linux中断机制
Sailor_forever sailing_9806@163.com 转载请注明
http://blog.csdn.net/sailor_8318/archive/ 2008/07/09 /2627136.aspx
【摘要】本文详解了Linux内核的中断实现机制。首先介绍了中断的一些基本概念,然后分析了面向对象的Linux中断的组织形式、三种主要数据结构及其之间的关系。随后介绍了Linux处理异常和中断的基本流程,在此基础上分析了中断处理的详细流程,包括保存现场、中断处理、中断退出时的软中断执行及中断返回时的进程切换等问题。最后介绍了中断相关的API,包括中断注册和释放、中断关闭和使能、如何编写中断ISR、共享中断、中断上下文中断状态等。
【关键字】中断,异常,hw_interrupt_type,irq_desc_t,irqaction,asm_do_IRQ,软中断,进程切换,中断注册释放request_irq,free_irq,共享中断,可重入,中断上下文
目录
1 中断概述... 2
1.1 为什么需要中断?... 2
1.2 中断的表示形式... 2
1.3 异常... 2
1.4 中断处理程序... 3
2 Linux中断的组织形式... 4
2.1 IRQ描述符irq_desc. 4
2.2 中断控制器描述符irq_chip. 5
2.3 中断服务例程描述符irqaction. 8
2.4 三者的关系... 9
3 Linux对异常和中断的处理... 10
3.1 异常处理... 10
3.2 中断处理... 10
3.3 中断处理程序的执行流程... 11
3.3.1 流程概述... 11
3.3.2 保存现场... 13
3.3.3 中断处理... 14
3.3.4 从中断返回... 19
4 中断API 21
4.1 中断服务例程的挂接... 21
4.2 中断卸载free_irq. 25
4.3 中断控制... 27
4.3.1 禁止和激活本地全局中断... 27
4.3.2 禁止指定中断线... 28
4.4 编写中断处理程序... 29
4.5 重入和中断处理程序... 29
4.6 共享的中断处理程序... 30
4.7 中断上下文... 30
4.8 中断系统的状态... 31
4.9 中断状态/proc/interrupts. 32