经验告诉您可以为几乎任何PCI适配器编写稳定的
用户空间驱动程序.在内核中只需要一些复杂性和一个小代理层. UIO是朝这个方向迈出的一步,但是如果要正确处理
用户空间中断,那么UIO可能还不够,例如,如果设备
不支持UIO所依赖的PCI-spec的中断
禁止位.
请注意,进程唤醒延迟是几微秒,所以如果您的实现需要非常低的延迟,那么用户空间可能会拖动它.
如果我要实现一个用户空间驱动,那么我将把内核的ISR减少到一个“disable& ack&唤醒用户空间”操作,处理唤醒过程中的中断,然后重新启用中断(当然,通过写入从用户空间进程映射的PCI内存).