Buddy system之free_pages

释放pages的基础知识在“Buddy system基础 ”这篇文章中已经讲过了,这里主要分析释放pages的代码。

代码框架


free_pages
   |----->__free_pages(virt_to_page((void *)addr), order);
   |   |----->__free_pages_ok(page, order);
   |   |   |----->migratetype = get_pfnblock_migratetype(page, pfn);
   |   |   |      获取page所属pageblock的迁移类型
   |   |   |----->free_one_page(page_zone(page), page, pfn, order, migratetype);
   |   |   |   |----->__free_one_page(page, pfn, zone, order, migratetype);
   |   |   |   |   |----->max_order = min_t(unsigned int, MAX_ORDER, pageblock_order + 1);
   |   |   |   |   |      选择最大的order,当前上下文是11
   |   |   |   |   |----->page_idx = pfn & ((1 << MAX_ORDER) - 1);
   |   |   |   |   |      获取page在pageblock中的index
   |   |   |   |   |----->buddy_idx = __find_buddy_index(page_idx, order);
   |   |   |   |   |      获取其伙伴的page_index
   |   |   |   |   |----->buddy = page + (buddy_idx - pag
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值