3

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

现在,我知道我可以mmap将文件描述符放入用户空间,它原则上可以代表所述设备的模拟。

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

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

4

1 回答 1

2

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

主要问题是您可以期望内核不会刷新每次写入。但是,有一个msync()调用来刷新所有未完成的写入,但是您的被测系统不会调用它。但是,我认为您可以使用以下方法打开文件描述符O_DIRECT | O_DSYNC

于 2016-07-20T11:02:05.310 回答