Файлы данных отображения памяти в коде ядра Linux

Вот мой вопрос: я хочу отобразить часть файла данных из кода, работающего в пространстве ядра Linux. Я хочу позже отменить ту же карту памяти, также из кода, работающего в пространстве ядра Linux. Как мне это сделать и чем они отличаются от использования mmap(2)/munmap(2) в пространстве пользователя?

Я пытаюсь сделать это исключительно в пространстве ядра, где нет пользовательского процесса.

Я просмотрел веб-поиск и онлайн-книги по ядру Linux, в том числе «Понимание ядра Linux» Бовета и Чезати. Хорошая книга, но она не отвечает на мой вопрос.


person Morbius    schedule 24.09.2015    source источник
comment
Не понятно, что вы спрашиваете. Вы хотите отобразить файл, который будет использоваться исключительно внутри ядра? Или вы хотите написать код ядра для сопоставления файла с адресным пространством пользовательского процесса?   -  person kaylum    schedule 24.09.2015
comment
Не делайте этого в земле ядра. Сделайте некоторый процесс-оболочку...   -  person Basile Starynkevitch    schedule 25.09.2015


Ответы (1)


Не рекомендуется напрямую обращаться к файловой системе, чтобы делать что-либо в ядре. Лучший способ приблизиться к этому — open и mmap файл в пользовательском пространстве и передать полученный виртуальный адрес пользователя в пространство ядра. В пространстве ядра вам нужно настроить виртуальные адреса ядра, которые указывают на ту же физическую память, на которую указывает адрес пользовательского пространства.

Этот вопрос SO дает пример кода о том, как реализовать вторую часть: https://stackoverflow.com/a/13745255/639069< /а>

person R.D.    schedule 24.09.2015