int get_user_pages ( struct task_struct * tsk, / the task_struct to use for page fault accounting, or NULL if faults are not to be recorded. 一般选择current
struct mm_struct * mm, 进程的内存占用结构,如current->mm,
unsigned long start, 要获取其页面的起始逻辑地址,它是用户空间使用的一个地址
int nr_pages, 要获取的页数
int write, 是否要被调用者写入
int force, 存放获取的 struct page的指针数组 (至少有 nr_pages 指定的长度)
struct mm_struct * mm, 进程的内存占用结构,如current->mm,
unsigned long start, 要获取其页面的起始逻辑地址,它是用户空间使用的一个地址
int nr_pages, 要获取的页数
int write, 是否要被调用者写入
int force, 存放获取的 struct page的指针数组 (至少有 nr_pages 指定的长度)
struct page ** pages, 返回各个页对应的struct vm_area_struct,可以传入NULL表示不获取
描述:
获取用户区进程使用内存的某个页(struct page),然后可以在内核区通过kmap_atomic(), kmap()等函数映射到内核区线性地址,从而可以在内核区向其写入数据。
返回得到的pages数目。这有可能比需要的数目要少,如果nr_pages是0或者负数,返回0。如果没有得到pages 那么返回 -errno.
原文链接:
http://www.kernel.org/doc/htmldocs/kernel-api/API-get-user-pages.html