Questions tagged «irq»

3
Linux内核如何处理共享的IRQ?
根据到目前为止的读物,“当内核收到中断时,将调用所有已注册的处理程序。” 我了解每个IRQ的已注册处理程序都可以通过进行查看/proc/interrupts,并且我也了解已注册处理程序来自调用了request_irq传递大致形式的回调的驱动程序: irqreturn_t (*handler)(int, void *) 根据我所知道的,应该调用与特定IRQ相关的每个中断处理程序回调,并且由处理程序确定是否确实应由该中断处理该中断。如果处理程序不应该处理特定的中断,则它必须返回内核宏IRQ_NONE。 我无法理解的是,每个驱动程序如何确定是否应该处理中断。我想如果他们期望中断,他们可以在内部保持跟踪。如果是这样,我不知道他们将如何处理同一个IRQ后面的多个驱动程序都希望中断的情况。 我试图了解这些细节的原因是因为我弄乱了在kexec系统操作过程中重新执行内核的机制,同时使用了PCIe桥以及下游PCI上的复位引脚和各种寄存器设备。这样做时,重新启动后,我可能会出现内核崩溃,或者其他驱动程序抱怨即使没有进行任何操作,它们也会收到中断。 处理程序如何决定应由其处理中断是一个谜。 编辑:如果相关,则所讨论的CPU体系结构为x86。
14 linux  kernel  pci  interrupt  irq 
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.