linux - Linux 内核中的 VM_MIXEDMAP 和 VM_PFNMAP 标志是什么意思?
问题描述
驱动程序使用这两个标志,但我不明白为什么我们需要它们。如果我不在 VMA 上设置这两个标志会发生什么?我应该什么时候使用它们?有人可以提供一些用例吗?谢谢。
解决方案
的最佳解释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
.
推荐阅读
- java - SAML - 解析服务提供者元数据并提取详细信息,例如签名证书和断言消费者端点
- c - 为什么返回 1?
- sql - 在 Big Query 中拆分以逗号分隔的电子邮件的表格
- sql - 使用 JSON_MODIFY 将多个对象附加到现有数组中
- c++ - 在 C++ 中一次将向量值写入多个文件
- laravel - 如何在 Laravel 视图中的 @if 中使用行数?
- android - Expo SDK 需要 Expo 才能运行。我是 react-native 的初学者?
- json - 使用 jq 向 json 数组添加新键
- python - 如何根据 pandas 中另一个数据帧(在某些操作之前和之后)的数据将一个数据帧分成两个?
- python - 替换numpy数组中的元素