Linux中断处理杂记
来源:互联网 发布:sketchup mac安装教程 编辑:程序博客网 时间:2024/06/09 17:57
1. irq_desc数组
kernel/irq/irqdesc.c
struct irq_desc irq_desc[NR_IRQS] __cacheline_aligned_in_smp = {
[0 ... NR_IRQS-1] = {
.handle_irq = handle_bad_irq,
.depth = 1,
.lock = __RAW_SPIN_LOCK_UNLOCKED(irq_desc->lock),
}
};
每一个中断号(或者叫一条中断线),对应一个数组元素。
不同设备,可能共用同一个中断号
2. 中断到来后,cpu会根据中断号,找到相应的中断门,进而跳到对应的中断处理例程执行。这个过程完全由硬件完成。
当然,中断门已由OS在启动时做了妥善的初始化。
3. 所有的中断处理例程,均获取并保存一下中断号(当然还有别的一些系统方面的工作),然后执行do_IRQ。
do_IRQ再调用handle_irq
handle_irq根据中断号,索引到irq_desc中的对应元素desc,然后调用desc->handle_irq完成中断处理。
desc->handle_irq可能是如下的一些函数
handle_level_irq
handle_edge_irq
当然,也可能是别的函数,反正我没有理全。
这些函数,最终会调用handle_irq_event,进而进入handle_irq_event_percpu。
后者,会遍历desc->action指向的一个struct irqaction类型的链表(每一个共享此同一中断线的设备对应一个action),尝试调用其handler完成中断的处理。
- Linux中断处理杂记
- 硬件中断处理相关的杂记
- linux 中断和中断处理
- Linux中断子系统-中断处理
- Linux-中断和中断处理
- MIPS-LINUX-中断处理
- Linux中断处理
- linux 中断处理
- Linux中断处理过程
- linux中断处理浅析
- Linux中断处理过程
- Linux中断处理浅析
- linux中断处理浅析
- Linux中断处理浅析
- linux中断处理浅析
- MIPS-LINUX-中断处理
- zz: linux中断处理
- linux 信号中断处理
- UCenter 1.6.0 安装过程
- QT+osg更新重绘
- UCOSIII存储管理(待更)
- NYOJ 613 免费馅饼
- Android开发之如何保证Service不被杀掉(broadcast+system/app)
- Linux中断处理杂记
- 聊聊IO多路复用之select、poll、epoll详解
- Spring MVC上手
- Linux内核的动态电压和电流控制接口(regulator&dvfs)
- js获取dom元素绝对位置
- kylin 安装配置实验
- 亲测,安装cocoa pods,简单,暴力,有效!
- 探秘Java中String、StringBuilder以及StringBuffer
- HashMap、LinkedHashMap元素遍历机制探讨