Skip to content

中断

中断是实现硬件级从下而上通信的机制,利用中断可以实现:硬件反馈、系统调用、回调函数、自定义中断、信号中断、系统异常和错误等。

基本机制

中断一般由外围硬件在任意时刻触发。外设会向中断控制器发送中断电信号,然后中断控制器会将中断路由到特定的 CPU 核心,打断该 CPU 核心正在进行的工作,切换上下文去执行中断处理程序。

中断上下文

中断上下文要求程序不可休眠(阻塞),不可执行耗时任务。

中断处理函数的上下半

linux 中的中断实现采用了上下半

注册和注销中断处理函数

中断处理程序由驱动程序在初始化设备之后注册,并在卸载设备之前注销。

c
int request_irq();
int free_irq();

中断处理函数以异步的方式执行,并且会打断其他任务的执行,甚至是比较重要任务,为此,中断处理程序应当尽量的短而快,且不允许阻塞。

中断处理函数无须保证可重入,因为在同一条中断线上,同时只能运行一个中断处理程序;

共享中断类型