内核用户I/O应用程序开发

net*_*ger 6 c linux qemu driver linux-device-driver

我已阅读以下有关用户I/O的链接:http: //www.hep.by/gnu/kernel/uio-howto/

并遵循http://nairobi-embedded.org/uio_example.html.

我正在使用ivshmem设备将内存从主机映射到来宾(在QEmu中).我正在使用的客户端驱动程序是来自https://www.gitorious.org/nahanni/guest-code的 kernel_module/uio/uio_ivshmem.c .

我已成功共享多个guest虚拟机之间的内存,我也可以使用上面git存储库中的ivshmem-server从主机向guest发出中断.

但我无法弄清楚如何从客户"中断"注意到写入内存已完成.即向另一位客人发出信号,告知其应该阅读第一位客人所写的内容.

我究竟做错了什么?有没有办法使用UIO发送中断或者我只能接收?我怎么注意到我已经完成了写作/阅读?

net*_*ger 2

好吧,我现在明白为什么我不能发送中断了。

我确实尝试使用测试应用程序,但是,正如您可以在这篇文章(http://lists.gnu.org/archive/html/qemu-devel/2014-08/msg05388.html)中读到的,内核中的补丁破坏了 uio_ivshmem.c。

该补丁使 ivshmem 无法映射用于发送中断的 BAR0。BAR2 仍然很好,可以用来共享数据,但中断不起作用。