这是我的问题:我想从 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/