第10章:中断处理: Quick Reference

中断管理相关符号速查表

头文件符号 / 函数描述
<linux/interrupt.h>request_irq(unsigned int irq, irqreturn_t (*handler)(...), unsigned long flags, const char *dev_name, void *dev_id)注册中断处理程序,返回 0 表示成功,负值表示错误(如 -EBUSY
free_irq(unsigned int irq, void *dev_id)注销中断处理程序,dev_id 需与注册时一致(共享中断必填)
<linux/irq.h>can_request_irq(unsigned int irq, unsigned long flags)仅 i386 和 x86_64 架构可用,判断中断线是否可分配(返回非零表示可能成功,结果非绝对可靠)
<asm/signal.h>SA_INTERRUPTrequest_irq 的标志位,请求安装快速处理程序(当前 CPU 上禁用其他中断)
SA_SHIRQ标志位,允许中断线共享(需配合 dev_id 使用)
SA_SAMPLE_RANDOM标志位,表明中断时间戳可用于生成系统熵(增强随机数安全性)
-/proc/interrupts伪文件,显示各 IRQ 的中断计数、处理 CPU、控制器类型及关联设备名
/proc/stat伪文件,记录系统启动以来的总中断数及各 IRQ 的累计计数(包括已释放的中断)
-probe_irq_on(void)中断探测函数,返回未分配中断的位掩码,需保存并传递给 probe_irq_off
probe_irq_off(unsigned long mask)结束中断探测,返回触发的 IRQ 号(0 表示无中断,负值表示多中断冲突)
-IRQ_NONE中断处理程序返回值,表示未处理该中断(非本设备触发)
IRQ_HANDLED处理程序返回值,表示已成功处理本设备中断
IRQ_RETVAL(int x)宏,将布尔值转换为标准返回值(x 为真时返回 IRQ_HANDLED,否则返回 IRQ_NONE
-disable_irq(int irq)禁用指定 IRQ 线(等待当前处理完成后生效),非共享中断专用
disable_irq_nosync(int irq)立即禁用指定 IRQ 线(不等待当前处理完成),非共享中断专用
enable_irq(int irq)启用指定 IRQ 线,非共享中断专用
-local_irq_save(unsigned long flags)禁用当前 CPU 的所有中断,并保存中断状态到 flags
local_irq_restore(unsigned long flags)根据 flags 恢复当前 CPU 的中断状态
local_irq_disable(void)无条件禁用当前 CPU 的所有中断(不保存状态)
local_irq_enable(void)无条件启用当前 CPU 的所有中断

关键说明

  1. 共享中断注意事项

    使用 SA_SHIRQ 时,dev_id 不可为 NULL(用于区分共享设备),且处理程序需通过硬件状态判断中断是否由本设备触发(返回 IRQ_NONE 表示非本设备中断)。

  2. 中断开关函数的适用场景

    • disable_irq/enable_irq 作用于全局 IRQ 线,影响所有使用该 IRQ 的设备,共享中断禁止使用;

    • local_irq_* 系列函数仅影响当前 CPU 的中断状态,常用于保护中断上下文与进程上下文的共享数据(配合自旋锁使用)。

  3. 中断处理程序返回值

    ​​​​​​​必须返回 IRQ_NONE 或 IRQ_HANDLED(或通过 IRQ_RETVAL 转换),内核据此判断是否需要进一步处理(如唤醒等待进程)。

评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

DeeplyMind

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值