我希望在C中模拟一个内存映射设备,以便对设备包装库进行有效的单元测试(在Linux中)。
现在,我知道我可以contentSize
一个文件描述符进入用户空间,原则上可以代表所述设备的模拟。
所以,AFAICT,我的问题归结为:在用户空间中是否有可能创建一个文件描述符mmap
可以起作用,读写是由合适的回调处理的?
或者,也许这是一个已解决的问题,并且有一个已知的内核驱动程序可以挂钩?
答案 0 :(得分:2)
考虑到它是Linux系统,您可以实现一个非常简单的FUSE文件系统,其中只有一个文件。内核可以从那里处理它。
主要问题是你可以期望内核不会刷新每次写入。但是,msync()
调用了所有未完成的写入,但是您的系统测试不会调用它。但是,我认为您可以使用O_DIRECT | O_DSYNC