Как получить доступ к памяти пользовательского пространства из ядра Linux?

Я знаю, что copy_to_user/ copy_from_user, get_user/ put_userпредназначены для этой цели.

Мой вопрос заключается в том, что, учитывая адрес/указатель пользовательского пространства, как я могу получить доступ к данным, на которые указывает адрес, из ядра в целом?

Я могу себе представить, что сначала я должен убедиться, что содержащая страница должна находиться в физической памяти (а не на диске).

Каков следующий шаг? Могу ли я использовать *p, где p— указатель, указывающий на некоторые данные пользовательского пространства, для прямой ссылки на данные?

Или мне нужно сначала вызвать kmap, чтобы отобразить содержащий фрейм физической страницы в виртуальное адресное пространство ядра? Почему?

9
задан Mihai Maruseac 9 May 2012 в 04:40
поделиться