__SetPageBuddy & __ClearPageBuddy

本文介绍了一个内核级的页伙伴内存管理系统中两个关键函数:设置页order并同步更新buddy标志的set_page_order函数,以及移除页order并清除buddy标志的rmv_page_order函数。文中详细解释了如何通过修改page描述符中的private字段和_mapcount值来实现对内存页状态的管理。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

__SetPageBuddy

static inline void set_page_order(struct page *page, unsigned int order) 
{  
    set_page_private(page, order);  
    __SetPageBuddy(page); 
}

__ClearPageBuddy

static inline void rmv_page_order(struct page *page) 
{  
    __ClearPageBuddy(page);  
    set_page_private(page, 0); 
}

这两个函数的主要作用是:

在页设置order情况下,也同时设置buddy标识。设置order为0的情况下,同时清除buddy标志。

页的order存放在private中。

PageBuddy检查是否空闲即mapcount是否为PAGE_BUDDY_MAPCOUNT_VALUE

__SetPageBuddy设置_mapcount为PAGE_BUDDY_MAPCOUNT_VALUE

__ClearPageBuddy清除_mapcount的PAGE_BUDDY_MAPCOUNT_VALUE 值为-1

需要注意的是,_mapcount位于page描述符中。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值