据我所知,Linux 具有“快速中断”,即使用 SA_INTERRUPT 标志请求的中断;在当前 CPU 上禁用所有其他中断的情况下执行快速中断。但是它与正常的中断处理程序行为(在哪里)有什么不同?
这里有一篇写得很好的文章:
旧版本的 Linux 内核煞费苦心地区分“快”和“慢”中断。快速中断是那些可以非常快地处理的中断,而处理慢速中断则需要更长的时间。慢速中断对处理器的要求可能很高,因此在处理中断时重新启用中断是值得的。否则,需要快速集中注意力的任务可能会被拖延太久。
在现代内核中,快中断和慢中断之间的大部分差异已经消失。只剩下一种情况:快速中断(使用 SA_INTERRUPT 标志请求的中断)在当前处理器上禁用所有其他中断的情况下执行。请注意,其他处理器仍然可以处理中断,尽管您永远不会看到两个处理器同时处理相同的 IRQ。
那么,您的驱动程序应该使用哪种类型的中断?在现代系统上,SA_INTERRUPT 仅适用于少数特定情况,例如定时器中断。除非您有充分的理由在禁用其他中断的情况下运行中断处理程序,否则不应使用 SA_INTERRUPT。
所以唯一的区别就是你提到的那个;快速中断处理程序在禁用所有其他中断处理程序的情况下执行,以获得更快的性能。