Я бы хотел передать указатель из памяти пространства пользователя в функцию в моем модуле ядра. Я не хочу использовать copy_from_user
. Я прочитал, что я должен использовать функцию get_user_pages
.
Например, одна страница.
struct page **pages;
pages = kmalloc(1 * sizeof(*pages), GFP_KERNEL);
down_read(¤t->mm->mmap_sem);
get_user_pages(current,current->mm,uaddr, 1, 1, 0,pages,NULL);
up_read(¤t->mm->mmap_sem);
uaddr
- это адрес в пространстве пользователя.
- После этого я могу привести и передать
uaddr
в мой модуль модуля ядра? Или, может быть, я должен каким-то образом использовать эти struct pages
- Почему я должен использовать чтение вниз / вверх?
- После всего мне нужно использовать функции
SetPageDirty()
и page_cache_release()
?