Как функция remap_pfn_range отображает память ядра в пространство пользователя?

функция remap_pfn_range (используется в вызове mmap в драйвере) может быть использована для отображения памяти ядра в пространство пользователя. Как это делается? Может ли кто-нибудь объяснить точные шаги? Режим ядра - это привилегированный режим (PM), а пространство пользователя - непривилегированный (NPM). В PM CPU может получить доступ ко всей памяти, в то время как в NPM некоторая память ограничена - к ней CPU не может получить доступ. Когда вызывается remap_pfn_range, как тот диапазон памяти, который был ограничен только в PM, теперь доступен в пространстве пользователя?

Если посмотреть на код remap_pfn_range, то там есть pgprot_t struct. Это структура, связанная с отображением защиты. Что такое отображение защиты? Это ответ на вопрос выше?

15
задан Mateusz Piotrowski 13 May 2017 в 18:45
поделиться