c - Linux内核代码中的内存映射数据文件

标签 c linux-kernel memory-mapping

这是我的问题:我想从 Linux 内核空间中运行的代码中内存映射部分数据文件。我想稍后撤消相同的内存映射,也来自在 Linux 内核空间中运行的代码。我该怎么做,它们与在用户空间中使用 mmap(2)/munmap(2) 有何不同?

我试图仅在没有用户进程的内核空间中执行此操作。

我浏览过网络搜索和在线 Linux 内核书籍,包括 Bovet 和 Cesati 合着的“了解 Linux 内核”。一本好书,但它没有回答我的问题。

最佳答案

不鼓励直接访问文件系统在内核中做任何事情。解决此问题的最佳方法是打开mmap 用户空间中的文件,并将生成的用户虚拟地址传递给内核空间。在内核空间中,您需要设置指向用户空间地址所指向的同一物理内存的内核虚拟地址。

这个 SO 问题给出了关于如何实现第二部分的代码示例:https://stackoverflow.com/a/13745255/639069

关于c - Linux内核代码中的内存映射数据文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/32770217/

相关文章:

c++ - C++ 中的内存映射流数据

macos - 在 OS X 10.5/10.6 中检索其自身进程的内存映射

c - 为 3D 数组分配内存

c - 某些单词/C 的加密错误

c - 隐藏设备应用程序执行失败

linux - 系统调用表中不存在的系统调用

c - Linux 中的红黑树

linux - 陷阱值有什么用?

linux - 为什么 proc/ID/maps 有多个共享库条目

c - window : two threads handling messages?