首页 > 解决方案 > Linux 内核中的 VM_MIXEDMAP 和 VM_PFNMAP 标志是什么意思?

问题描述

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

标签: linuxlinux-kerneldriverlinux-device-driverembedded-linux

解决方案


的最佳解释VM_MIXEDMAP,间接地VM_PFNMAP,来自引入它的补丁提交的描述:http: //visa.lab.asu.edu/gitlab/fstrace/android-kernel-msm-hammerhead-3.4-marshmallow-mr3/提交/b379d790197cdf8a95fb67507d75a24ac0a1678d

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

这两个标志都是非常特殊的用途,VM_PFNMAP在这里讨论:https ://linux-mm.org/DeviceDriverMmap

在我看来,“普通”设备驱动程序不太可能碰巧使用VM_MIXEDMAP.


推荐阅读