内核函数__get_free_page和 free_pages

本文介绍了Linux内核中的__get_free_pages函数,用于按需分配物理页面,并详细解析了其参数和工作原理。同时提到了get_zeroed_page函数,它会在分配页面的同时清零数据。最后,阐述了free_pages函数的使用,用于释放之前分配的内存页面。这些函数在内核内存管理中扮演着关键角色。
摘要由CSDN通过智能技术生成

unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
功能:以gfp_mask的方式分配2^order个物理页面
gfP_mask:分配的方式,指出如何分配在哪分配如GFP_KERNEL
order:分配2^order个页面
返回值:返回分配的第一个页的逻辑地址
头文件: #include <gfp/linux.h>

unsigned long __get_free_pages(gfp_t gfp_mask, unsigned int order)
{
    struct page *page;
    VM_BUG_ON((gfp_mask & __GFP_HIGHMEM) != 0);

    page = alloc_pages(gfp_mask, order);
    if (!page)
        return 0;
    return (unsigned long) page_address(page);
}

unsigned long get_zeroed_page(gfp_t gfp_mask)
功能:获得物理页地址返回的是虚拟地址类似于__get_free_pages但此函数会将页数据清零
gfp_mask:分配方式 GFP_KERNEL GFP_ATOMIC
内核代码:
unsigned long get_zeroed_page(gfp_t gfp_mask)
{
    return __get_free_pages(gfp_mask | __GFP_ZERO, 0);
}
头文件:#include <linux/gfp.h>
此函数申请的空间用fre

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值