copy_to_user
__arch_copy_to_user
vmalloc
从高端内存区highmem分配内存,虚拟内存地址是连续的,但是物理地址不是连续的
void *vmalloc(unsigned long size)
for (i = 0; i < area->nr_pages; i++) {
struct page *page;
if (node == NUMA_NO_NODE)
page = **alloc_page**(alloc_mask|highmem_mask);
else
page = alloc_pages_node(node, alloc_mask|highmem_mask, 0);
if (unlikely(!page)) {
/* Successfully allocated i pages, free them in __vunmap() */
area->nr_pages = i;
goto fail;
}
area->pages[i