我想将用户空间内存中的指针传递到内核模块中的函数中。我不想使用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()
功能?