Bra*_*lor 16 linux linux-kernel interrupt-handling
在Linux中,在用户空间代码而不是内核空间中处理设备中断的选项有哪些?
经验告诉我们可以为几乎任何PCI适配器编写良好且稳定的用户空间驱动程序.它只需要一些复杂性和内核中的小代理层.UIO是朝着这个方向迈出的一步,但是如果你想正确处理用户空间中的中断,那么UIO可能还不够,例如,如果设备不支持UIO所依赖的PCI规范的中断禁用位.
请注意,进程唤醒延迟只有几微秒,因此如果您的实现需要非常低的延迟,那么用户空间可能会拖累它.
如果我要实现一个用户空间驱动程序,我会将内核ISR简化为"disable&ack&wakeup-userpace"操作,处理唤醒过程中的中断,然后重新启用中断(当然,通过从用户空间进程写入映射的PCI内存).