在用户空间中用C模拟内存映射设备

时间:2016-07-20 10:54:34

标签: c unit-testing mmap device-driver userspace

我希望在C中模拟一个内存映射设备,以便对设备包装库进行有效的单元测试(在Linux中)。

现在,我知道我可以contentSize一个文件描述符进入用户空间,原则上可以代表所述设备的模拟。

所以,AFAICT,我的问题归结为:在用户空间中是否有可能创建一个文件描述符mmap可以起作用,读写是由合适的回调处理的?

或者,也许这是一个已解决的问题,并且有一个已知的内核驱动程序可以挂钩?

1 个答案:

答案 0 :(得分:2)

考虑到它是Linux系统,您可以实现一个非常简单的FUSE文件系统,其中只有一个文件。内核可以从那里处理它。

主要问题是你可以期望内核不会刷新每次写入。但是,msync()调用了所有未完成的写入,但是您的系统测试不会调用它。但是,我认为您可以使用O_DIRECT | O_DSYNC

打开文件描述符