Linux内核模块编程--中断处理程序

本文详细介绍了Linux内核中硬件中断处理的概念,包括IRQs的分类、中断处理程序的工作方式以及如何注册中断处理程序。中断处理程序分为短中断和长中断,前者立即响应,后者允许其他中断发生。在中断处理中,使用request_irq进行注册,并通过调度bottom half来处理后续任务,确保系统稳定运行。
摘要由CSDN通过智能技术生成

中断处理程序

除了上一章外,迄今为止,我们在内核中所做的每件事都是作为对一个进程请求的回应,要么通过处理特殊的文件,发送 ioctl,要么发出系统调用。但是内核的工作并不仅仅是回应进程请求。另一个每个字节都很重要的工作是和连接到机器的硬件对话。
在CPU和计算机的其他设备之间有两种交互作用。第一种是当CPU对硬件发布命令时,另一种是当硬件要告诉CPU什么事情时。第二种,被称为中断,实现起来是很困难的,因为它不得不处理什么时间硬件是方便的而不是CPU。典型的硬件设备只有很少的内存,如果当信息可见的时候你不读取的话它就会消失。

在 Linux 下,硬件中断被称为 IRQs [Interrupt Requests (这是Linux起源的Intel 架构上的标准术语。 )的缩写]。有两种 IRQs,短的和长的。一个短的 IRQ 预期占用 非常短的一段时间,在那期间,机器的剩余部分被阻塞,没有其他的中断将被处理。长的 IRQ 占用的时间长些,在那期间其他中断有可能发生(但不能是来自同一设备)。只要是可能的,声明一个长中断是较好的。

当 CPU 接收到一个中断,它停止它正在做的任何事情(除非它正在处理一个更重要的中断,在那种情况下,它将处理完那个中断后才来处理现在的这个),在堆栈中保存某些参数并调用中断处理程序。这意味着在中断处理程序自身中有些东西是不能允许的,因为系统处于一种未知的状态。解决的办法是中断处理程序马上做完需要做的,通常是从硬件里面读什么或向硬件发送什么然后安排处理稍后的新信息(这被称为‘bottom half’)并返回。然后内核保证只要可能就调用bottom half --当这在运行,内核模块中允许做的所有事情将被允许。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值