您的位置:首页 > 其它

内存管理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);
}
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: