我了解UIO驱动程序背后的基础知识,如documentation中所述。我遗漏的部分是如何将数据从用户空间程序写回设备驱动程序。我的猜测是,您应该将此数据写入mmap
区域,但是如何让设备驱动程序知道它应该读取所述内存?
最终,我将尝试编写一个可由用户空间程序实现的块设备。我已经完成了块设备代码的存根工作:https://github.com/wspeirs/usbd。我的想法是UIO是在块设备和用户空间程序之间传输块/扇区的最有效的方法。这是从用户空间与块设备驱动程序进行通信的错误方式吗?我应该使用sysfs
或其他通信机制吗?
发布于 2018-09-20 08:27:54
UIO的设计目的是让用户空间绕过内核与硬件设备通信。这似乎不符合您的需求。
在标准的Linux块设备中,您可以使用mmap()
将数据写入您的块,并使用msync()
向驱动程序指示您写入了哪些区域。
https://stackoverflow.com/questions/52378471
复制相似问题