写入 UIO 设备

Write to a UIO Device

我了解 UIO 驱动程序背后的基础知识,如 documentation 中所述。我缺少的部分是如何将数据从用户 space 程序 back 写入设备驱动程序。我的猜测是您会将此数据写入 mmap 区域,但是您如何让设备驱动程序知道它应该读取所​​述内存?

最终,我正在尝试编写一个可以由用户 space 程序实现的块设备。我已删除并运行块设备代码:https://github.com/wspeirs/usbd。我的想法是,UIO 是在块设备和用户 space 程序之间传输 blocks/sectors 的最有效方式。这是从用户 space 与块设备驱动程序通信的错误方式吗?我应该使用 sysfs 还是其他一些通信机制?

UIO 旨在让用户 space 绕过内核与硬件设备通信。这似乎不符合您的需求。

在标准的 Linux 块设备中,您可以使用 mmap() 将数据写入您的块,并使用 msync() 向驱动程序指示您写入了哪些区域。