这两个标志由驱动程序使用,但我不明白为什么我们需要它们。如果我不在 VMA 上设置这两个标志会发生什么?我什么时候应该使用它们?有人可以提供一些用例吗?谢谢。
对
VM_MIXEDMAP
以及间接对 VM_PFNMAP
的最佳解释来自引入它的补丁提交的描述:
https://github.com/torvalds/linux/commit/b379d790197cdf8a95fb67507d75a24ac0a1678d
简而言之,
VM_MIXEDMAP
允许映射包含“托管”页面(即由内存管理器控制)和“非托管”页面(即“按原样”给出,如物理设备)。 VM_PFNMAP
适用于“完全不受管理”的区域,其资源不受正常分配系统控制(例如,再次,像映射到用户空间中的物理设备)。
这两个标志都有非常特殊的用途,
VM_PFNMAP
在这里讨论:https://linux-mm.org/DeviceDriverMmap
在我看来,“正常”设备驱动程序不太可能碰巧使用
VM_MIXEDMAP
。