Я знаю, что copy_to_user
/ copy_from_user
, get_user
/ put_user
предназначены для этой цели.
Мой вопрос заключается в том, что, учитывая адрес/указатель пользовательского пространства, как я могу получить доступ к данным, на которые указывает адрес, из ядра в целом?
Я могу себе представить, что сначала я должен убедиться, что содержащая страница должна находиться в физической памяти (а не на диске).
Каков следующий шаг? Могу ли я использовать *p
, где p
— указатель, указывающий на некоторые данные пользовательского пространства, для прямой ссылки на данные?
Или мне нужно сначала вызвать kmap
, чтобы отобразить содержащий фрейм физической страницы в виртуальное адресное пространство ядра? Почему?