内核用户 I/O 应用程序开发
Kernel User I/O application development
我已阅读以下有关用户 I/O 的链接:
http://www.hep.by/gnu/kernel/uio-howto/
并关注 http://nairobi-embedded.org/uio_example.html。
我正在使用 ivshmem 设备将内存从主机映射到客户机(在 QEmu 中)。我使用的客户端驱动程序是 kernel_module/uio/uio_ivshmem.c 来自 https://www.gitorious.org/nahanni/guest-code.
我已经成功地在几个来宾之间共享内存,我也可以使用上面 git 存储库中的 ivshmem-server 从主机向来宾发出中断。
但我想不通如何才能让来宾"interrupt"注意到写入内存已完成。 IE。向另一位来宾发出信号,它应该阅读第一位来宾所写的内容。
我做错了什么?有什么方法可以使用 UIO 发送中断或者我只能接收吗?我还应该如何注意到我已完成 writing/reading?
好的,我现在明白为什么不能发送中断了
我确实尝试过使用测试应用程序,但是,正如您在这篇 (http://lists.gnu.org/archive/html/qemu-devel/2014-08/msg05388.html) post 中所读到的,内核中的一个补丁损坏了 uio_ivshmem.c。
此补丁使 ivshmem 无法映射用于发送中断的 BAR0。 BAR2 仍然很好,可用于共享数据,但中断不起作用。
我已阅读以下有关用户 I/O 的链接: http://www.hep.by/gnu/kernel/uio-howto/
并关注 http://nairobi-embedded.org/uio_example.html。
我正在使用 ivshmem 设备将内存从主机映射到客户机(在 QEmu 中)。我使用的客户端驱动程序是 kernel_module/uio/uio_ivshmem.c 来自 https://www.gitorious.org/nahanni/guest-code.
我已经成功地在几个来宾之间共享内存,我也可以使用上面 git 存储库中的 ivshmem-server 从主机向来宾发出中断。
但我想不通如何才能让来宾"interrupt"注意到写入内存已完成。 IE。向另一位来宾发出信号,它应该阅读第一位来宾所写的内容。
我做错了什么?有什么方法可以使用 UIO 发送中断或者我只能接收吗?我还应该如何注意到我已完成 writing/reading?
好的,我现在明白为什么不能发送中断了
我确实尝试过使用测试应用程序,但是,正如您在这篇 (http://lists.gnu.org/archive/html/qemu-devel/2014-08/msg05388.html) post 中所读到的,内核中的一个补丁损坏了 uio_ivshmem.c。
此补丁使 ivshmem 无法映射用于发送中断的 BAR0。 BAR2 仍然很好,可用于共享数据,但中断不起作用。