#linux #linux-kernel #driver #linux-device-driver #embedded-linux
#linux #linux-ядро #драйвер #linux-device-driver #встроенный-linux
Вопрос:
Эти два флага используются драйверами, но я не понимаю, зачем они нам нужны. Что произойдет, если я не установлю эти два флага в VMA? Когда я должен их использовать? Может ли кто-нибудь указать некоторые варианты использования? Спасибо.
Ответ №1:
Лучшее объяснение для VM_MIXEDMAP
, и косвенно для VM_PFNMAP
, исходит из описания отправки исправления, которое представило его: http://visa.lab.asu.edu/gitlab/fstrace/android-kernel-msm-hammerhead-3.4-marshmallow-mr3/commit/b379d790197cdf8a95fb67507d75a24ac0a1678d
Короче говоря, VM_MIXEDMAP
позволяет отображению содержать как «управляемые» страницы (т. Е. контролируемые диспетчером памяти), так и «неуправляемые» страницы (т. Е. предоставленные «как есть», как физические устройства). VM_PFNMAP
для «полностью неуправляемых» областей, ресурсы которых не контролируются обычной системой распределения (например, опять же, как физические устройства, отображаемые в пространстве пользователя).
Оба флага предназначены для особого использования, VM_PFNMAP
обсуждается здесь:https://linux-mm.org/DeviceDriverMmap
На мой взгляд, маловероятно, что в «обычных» драйверах устройств происходит использование VM_MIXEDMAP
.
Комментарии:
1. Является ли VM_PFNMAP подмножеством VM_MIXEDMAP?
2. Вроде того… но я думаю, что последнее зарезервировано для очень «внутренних» случаев, в частности оптимизаций, основанных на механизме копирования при записи и т.д…