您能否让我知道硬件/驱动程序如何引发中断?在 SMP 中,哪个 CPU 被中断?如果 IRQ 被多个设备共享,内核如何识别是哪个设备导致了中断。
/甘尼什
您能否让我知道硬件/驱动程序如何引发中断?在 SMP 中,哪个 CPU 被中断?如果 IRQ 被多个设备共享,内核如何识别是哪个设备导致了中断。
/甘尼什
传统上,有一条实际的中断线从设备运行到中断控制器,当它为高电平(或低电平,或处于边缘)时,会生成一个中断并且 CPU 开始执行中断处理程序。
在现代系统中,中断往往是总线上发送到中断控制器(或可能有多个)的消息。
就更多细节而言,您需要更具体,细节取决于您所谈论的硬件类型。
中断处理程序也称为 ISR 是 OS 中设备驱动程序的一部分。在 OS 中,每个 irq 号代表来自中断控制器的一条中断线。
设备与中断控制器硬连线,如果设备中产生中断,中断控制器将向相应的 CPU 发出信号。中断目标 CPU 可在中断控制器中为每条中断线编程。
为了在硬件中共享中断号,如 ARM 中的 GPIO,中断控制器或设备应为实际中断号提供额外的寄存器。此外,ISR 应该咨询该寄存器以获得真正的 IRQ 编号。