jasonLee的博客

一个初学者

__SetPageBuddy & __ClearPageBuddy

__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描述符中。

阅读更多
版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/jasonLee_lijiaqi/article/details/79957323
上一篇GitHub上传本地代码/更新本地代码
下一篇pfn_to_page()和page_to_pfn()
想对作者说点什么? 我来说一句

没有更多推荐了,返回首页

关闭
关闭