写入 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()
向驱动程序指示您写入了哪些区域。
我了解 UIO 驱动程序背后的基础知识,如 documentation 中所述。我缺少的部分是如何将数据从用户 space 程序 back 写入设备驱动程序。我的猜测是您会将此数据写入 mmap
区域,但是您如何让设备驱动程序知道它应该读取所述内存?
最终,我正在尝试编写一个可以由用户 space 程序实现的块设备。我已删除并运行块设备代码:https://github.com/wspeirs/usbd。我的想法是,UIO 是在块设备和用户 space 程序之间传输 blocks/sectors 的最有效方式。这是从用户 space 与块设备驱动程序通信的错误方式吗?我应该使用 sysfs
还是其他一些通信机制?
UIO 旨在让用户 space 绕过内核与硬件设备通信。这似乎不符合您的需求。
在标准的 Linux 块设备中,您可以使用 mmap()
将数据写入您的块,并使用 msync()
向驱动程序指示您写入了哪些区域。