用户空间中的 Linux 中断处理

标签 linux linux-kernel interrupt-handling

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

最佳答案

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

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

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

关于用户空间中的 Linux 中断处理,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/7986260/

相关文章:

linux-kernel - Linux 中 x86 架构的 IPI 种类

linux - 如何从 WSL (Ubuntu) Bash 运行 Windows 可执行文件

c++ - VS2017 Linux C++线程问题

C++ 自定义内存管理使用 brk() 系统调用分配内存?

linux - 如何通过KERNEL级Makefile查找*.o文件

arm - 设置中断向量表,ARMv6

c - 按下键盘按钮时,在哪里可以找到 linux 内核调用的 ISR?

linux - 什么时候使用字符串有用?

linux - 命令终止时 GNU screen 关闭窗口

linux-kernel - 如何获得内核线程ID?