Linux Kernel 3.0.8 内存管理函数

相关代码如下:

#define alloc_pages(gfp_mask, order) alloc_pages_node(numa_node_id(), gfp_mask, order)#define alloc_page_vma(gfp_mask, vma, addr) alloc_pages(gfp_mask, 0)#define alloc_page(gfp_mask) alloc_pages(gfp_mask, 0)

#define __get_free_page(gfp_mask) __get_free_pages((gfp_mask),0)#define __get_dma_pages(gfp_mask, order) __get_free_pages((gfp_mask) | GFP_DMA,(order))

#define pfn_to_page(pfn) (mem_map + ((pfn) – PHYS_PFN_OFFSET))#define page_to_pfn(page) ((unsigned long)((page) – mem_map) + PHYS_PFN_OFFSET)#define pfn_valid(pfn) ((pfn) >= PHYS_PFN_OFFSET && (pfn) < (PHYS_PFN_OFFSET + max_mapnr))

#define phys_to_page(phys) (pfn_to_page(phys >> PAGE_SHIFT))#define page_to_phys(page) (page_to_pfn(page) << PAGE_SHIFT)#define virt_to_page(kaddr) pfn_to_page(__pa(kaddr) >> PAGE_SHIFT)#define virt_addr_valid(kaddr) pfn_valid(__pa(kaddr) >> PAGE_SHIFT)

1)__get_free_pages实现代码如下,,它返回页的虚拟地址:

2)alloc_pages_node

生命中,每一种苦难的背后都有一片晴朗的天空

Linux Kernel 3.0.8 内存管理函数

相关文章:

你感兴趣的文章:

标签云: