gpt4 book ai didi

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

转载 作者:行者123 更新时间:2023-12-04 09:13:16 26 4
gpt4 key购买 nike

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

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

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

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

最佳答案

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

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

关于c - 在用户空间中模拟 C 中的内存映射设备,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38479292/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com