中断系统
了解更多
由CPU 或硬件产生事件,打断当前正常程序运行流程,执行指定程序,执行完中断处理程序后恢复正常程序运行。有如下两类:
- 异常, 由执行程序产生,比如总线访问异常,除零运算。
- 中断,外部硬件产,比如外部gpio, 网络中断等。
大多数中断是可以被屏蔽,也有部分不能屏蔽。更多细节参考CPU 芯片手册,类似MCU 中断,同架构的处理器设计类似。
这里更多讨论Linux 操作系统对中断设计思路。Linux 将中断处理分为bottom/top 两部分,即将紧急事件快速处理,对不那么紧急的事件延迟到线程中处理,这样增加内核的中断响应、同时也平衡中断性能。
有以下几种处理思路, 从延迟上看,soft-irq < tasklet < workqueue.
soft irq
了解更多
一般驱动开发者不常用,主要用于低延迟处理,内核设计以下类型的软件中断,是静态设定的。
1 | //inlude/linux/interrupt.h |
tasklet
由soft-irq (TASKLET_SOFITIRQ 和 HI_SOFTIRQ)实现tasklet,
线程处理
工作队列workueue
中断线程化处理