VM_MIXEDMAP 和 VM_PFNMAP 标志在 Linux 内核中意味着什么?

问题描述 投票:0回答:1

这两个标志由驱动程序使用,但我不明白为什么我们需要它们。如果我不在 VMA 上设置这两个标志会发生什么?我什么时候应该使用它们?有人可以提供一些用例吗?谢谢。

linux linux-kernel driver linux-device-driver embedded-linux
1个回答
1
投票

VM_MIXEDMAP
以及间接对
VM_PFNMAP
的最佳解释来自引入它的补丁提交的描述: https://github.com/torvalds/linux/commit/b379d790197cdf8a95fb67507d75a24ac0a1678d

简而言之,

VM_MIXEDMAP
允许映射包含“托管”页面(即由内存管理器控制)和“非托管”页面(即“按原样”给出,如物理设备)。
VM_PFNMAP
适用于“完全不受管理”的区域,其资源不受正常分配系统控制(例如,再次,像映射到用户空间中的物理设备)。

这两个标志都有非常特殊的用途,

VM_PFNMAP
在这里讨论:https://linux-mm.org/DeviceDriverMmap

在我看来,“正常”设备驱动程序不太可能碰巧使用

VM_MIXEDMAP

© www.soinside.com 2019 - 2024. All rights reserved.