内存管理API之__get_free_pages
2018-01-08 08:30
495 查看
unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) 用于以gfp_mask分配方式分配2的order次方个连续的物理页 其源码分析如下: unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order) { struct page *page; /* * __get_free_pages() returns a 32-bit address, which cannot represent * a highmem page */ #可见通过这个函数不能申请到高端内存 VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != 0); #首先通过alloc_pages 申请到page,然后通过 page_address 将page 转成虚拟地址返回给用户 #使用,由于这里已经判断page是否为null了。所以用于在调用__get_free_pages 只要判断 #返回值是0就表示调用失败了. page = alloc_pages(gfp_mask, order); if (!page) return 0; return (unsigned long) page_address(page); }
相关文章推荐
- 内存管理API之nr_free_buffer_pages
- 内存管理API之free_pages
- 内存管理API之free_pages_exact
- 内存管理API之mempool_alloc_pages和mempool_free_pages
- 内存管理API之get_user_pages
- 内存管理API之__free_pages
- 内存管理API之get_user_pages_fast
- 内存管理之bootmem管理之__free_pages_boot_core
- Linux-0.11内核内存管理get_free_page()函数分析
- 内存管理API之get_unmapped_area
- 内存管理API之mempool_free
- 转:内核中的内存申请:kmalloc、vmalloc、kzalloc、kcalloc、get_free_pages
- 比较kmalloc/vmalloc/get_free_pages
- 内存管理API之vma_pages
- linux 内存管理之kmalloc、vmalloc、malloc、get_gree_pages的区别
- 内存管理API之page_cache_get_speculative
- 转一篇文章,比较kmalloc/vmalloc/get_free_pages
- kmalloc()和__get_free_pages()
- linux kmalloc()和__get_free_pages()
- Linux-0.11内核源码分析系列:内存管理get_free_page()函数分析