在 Linux 中,在用户空间代码而不是内核空间中处理设备中断有哪些选项?
最佳答案
经验表明,可以为几乎所有 PCI 适配器编写良好且稳定的用户空间驱动程序。它只需要一些复杂性和内核中的一个小代理层。 UIO 是朝着这个方向迈出的一步,但如果您想正确处理用户空间中的中断,那么 UIO 可能还不够,例如,如果设备不支持 UIO 所依赖的 PCI 规范的中断禁用位。
请注意,进程唤醒延迟只有几微秒,因此如果您的实现需要非常低的延迟,那么用户空间可能会拖累它。
如果我要实现一个用户空间驱动程序,我会将内核 ISR 简化为“disable & ack & wakeup-userpace”操作,在唤醒进程中处理中断,然后重新启用中断(当然,通过从用户空间进程写入映射的 PCI 内存)。
关于用户空间中的 Linux 中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7986260/