Warning: file_get_contents(/data/phpspider/zhask/data//catemap/8/selenium/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Linux kernel Linux中共享IRQ的并发中断处理_Linux Kernel_Linux Device Driver_Interrupt_Interrupt Handling_Irq - Fatal编程技术网

Linux kernel Linux中共享IRQ的并发中断处理

Linux kernel Linux中共享IRQ的并发中断处理,linux-kernel,linux-device-driver,interrupt,interrupt-handling,irq,Linux Kernel,Linux Device Driver,Interrupt,Interrupt Handling,Irq,在处理程序的上半部分可以做或需要做什么。我看到中断首先被禁用,所以当这一操作完成后,我们是否会错过处理当前中断时可能到达的同一IRQ线上的其他中断 或者是否有任何实体跟踪丢失的中断,以便在当前运行的ISR结束时再次为该行启用中断后可以处理这些中断?中断处理程序应尽可能少 并不总是需要禁用中断。有些体系结构使用嵌套中断。无论如何,如果你禁用中断,你应该用一两个命令,而不是更多。这将造成延迟,并可能错过中断 当我处理中断时,我通常做两件事。一种是清除导致中断的标志。第二个是在tasklet、work

在处理程序的上半部分可以做或需要做什么。我看到中断首先被禁用,所以当这一操作完成后,我们是否会错过处理当前中断时可能到达的同一IRQ线上的其他中断


或者是否有任何实体跟踪丢失的中断,以便在当前运行的ISR结束时再次为该行启用中断后可以处理这些中断?

中断处理程序应尽可能少

并不总是需要禁用中断。有些体系结构使用嵌套中断。无论如何,如果你禁用中断,你应该用一两个命令,而不是更多。这将造成延迟,并可能错过中断

当我处理中断时,我通常做两件事。一种是清除导致中断的标志。第二个是在tasklet、workqueue等之后触发一些函数


请注意,不要在中断处理程序中使用任何可能会休眠的方法,如printf或获取中断。中断处理程序应尽可能最小化

并不总是需要禁用中断。有些体系结构使用嵌套中断。无论如何,如果你禁用中断,你应该用一两个命令,而不是更多。这将造成延迟,并可能错过中断

当我处理中断时,我通常做两件事。一种是清除导致中断的标志。第二个是在tasklet、workqueue等之后触发一些函数


请注意,不要在中断处理程序中使用任何可能会休眠的方法,如printf或获取中断。

您应该正确确认中断以避免IRQ风暴。 处理中断本身-如果你有一个大的工作要做,卸载到下半部分

禁用中断时会发生什么情况:在x86上,cli指令禁用当前ISR运行位置上的中断。一个IRQ被缓冲,因此当中断用sti恢复时,它被传递


当使用APIC中断时,缓冲发生在内核本身。内核确认APIC中断,并在调用enable_irq时再次触发它。

您应该正确确认中断以避免irq风暴。 处理中断本身-如果你有一个大的工作要做,卸载到下半部分

禁用中断时会发生什么情况:在x86上,cli指令禁用当前ISR运行位置上的中断。一个IRQ被缓冲,因此当中断用sti恢复时,它被传递


当使用APIC中断时,缓冲发生在内核本身。内核确认APIC中断,并在调用enable_irq时再次触发它。

关于共享中断的简要说明:共享中断线应始终使用电平敏感设备,这些设备也应具有相同的高电平和低电平。对于边缘触发中断,无法保证在一个设备触发后,但在其返回稳定状态之前,另一个设备不会触发。这成为一种无法避免的竞争状况


另一方面,电平触发中断保持激活状态,直到触发它的设备上的标志被清除。在处理第一个设备时,如果第二个设备触发,则它将等待IRQ线保持激活状态,直到处理程序再次启用IRQ线。

关于共享中断的简要说明:共享中断线应始终使用电平敏感设备,这些设备也应具有相同的高电平和低电平。对于边缘触发中断,无法保证在一个设备触发后,但在其返回稳定状态之前,另一个设备不会触发。这成为一种无法避免的竞争状况

另一方面,电平触发中断保持激活状态,直到触发它的设备上的标志被清除。在处理第一个设备时,如果第二个设备触发,则它将等待IRQ行保持活动状态,直到处理程序再次启用IRQ行