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

在Linux内核中,VM_MIXEDMAP和VM_PFNMAP标志意味着什么?,linux,linux-kernel,driver,linux-device-driver,embedded-linux,Linux,Linux Kernel,Driver,Linux Device Driver,Embedded Linux,这两个标志是由司机使用的,但我不明白为什么我们需要它们。如果我不在VMA上设置这两个标志,会发生什么?我应该什么时候使用它们?有人能给出一些用例吗?谢谢。关于VM\u MIXEDMAP和VM\u PFNMAP的最佳解释来自于对引入它的补丁提交的描述: 简而言之,VM_MIXEDMAP允许映射同时包含“托管”页面(即由内存管理器控制)和“非托管”页面(即给定的“原样”,如物理设备)VM_PFNMAP用于“完全不受管理”的区域,这些区域的资源不受正常分配系统的控制(例如,类似于映射到用户空间中的物

这两个标志是由司机使用的,但我不明白为什么我们需要它们。如果我不在VMA上设置这两个标志,会发生什么?我应该什么时候使用它们?有人能给出一些用例吗?谢谢。

关于
VM\u MIXEDMAP
VM\u PFNMAP
的最佳解释来自于对引入它的补丁提交的描述:

简而言之,
VM_MIXEDMAP
允许映射同时包含“托管”页面(即由内存管理器控制)和“非托管”页面(即给定的“原样”,如物理设备)
VM_PFNMAP
用于“完全不受管理”的区域,这些区域的资源不受正常分配系统的控制(例如,类似于映射到用户空间中的物理设备)

这两个标志都是非常特殊的用途,
VM\u PFNMAP
在这里讨论:


在我看来,在“普通”设备驱动程序中,不太可能碰巧使用
VM\u MIXEDMAP

VM\u PFNMAP是VM\u MIXEDMAP的子集吗?有点。。。但我认为后者只适用于非常“内部”的情况,特别是基于写上复制机制等的优化。。。