用户空间中的Linux中断处理

Bra*_*lor 16 linux linux-kernel interrupt-handling

在Linux中,在用户空间代码而不是内核空间中处理设备中断的选项有哪些?

Dan*_*oni 7

经验告诉我们可以为几乎任何PCI适配器编写良好且稳定的用户空间驱动程序.它只需要一些复杂性和内核中的小代理层.UIO是朝着这个方向迈出的一步,但是如果你想正确处理用户空间中的中断,那么UIO可能还不够,例如,如果设备不支持UIO所依赖的PCI规范的中断禁用位.

请注意,进程唤醒延迟只有几微秒,因此如果您的实现需要非常低的延迟,那么用户空间可能会拖累它.

如果我要实现一个用户空间驱动程序,我会将内核ISR简化为"disable&ack&wakeup-userpace"操作,处理唤醒过程中的中断,然后重新启用中断(当然,通过从用户空间进程写入映射的PCI内存).


nin*_*alj 5

UIO,但仍应在内核空间中进行处理.OTOH,如果你只是需要注意中断,你不需要内核部分.