天嵌 ARM开发社区

 找回密码
 注册
查看: 1939|回复: 2

linux释放块:page_idx = page_to_pfn(page) & ((1 << MAX_ORDER) - 1);

[复制链接]
wukui1008 发表于 2011-12-31 15:47:31 | 显示全部楼层 |阅读模式
static inline void __free_one_page(struct page *page,
                struct zone *zone, unsigned int order)
{
unsigned long page_idx;
...
page_idx = page_to_pfn(page) & ((1 << MAX_ORDER) - 1); /*MAX_ORDER = 11*/
...
}
这里取的是低11位,bit0~bit10   也就是8MB的范围
为什么不是page_idx = page_to_pfn(page) & ((1 << (MAX_ORDER-1)) - 1);
这样就是在4MB的范围内寻找伙伴块了。
伙伴系统中 最大也就是2个2MB合并为1个4MB的块,这样定义4MB的范围寻找伙伴就够了啊。
难道要将2个4MB的块合并为1个8MB的块?搞不懂
谁知道怎么搞的
raominping 发表于 2012-1-1 10:38:03 | 显示全部楼层
这个我还真不知道。。。超级版主快来啊
 楼主| wukui1008 发表于 2012-1-19 11:10:52 | 显示全部楼层
:o:funk:自己顶
您需要登录后才可以回帖 登录 | 注册

本版积分规则

关闭

i.MX8系列ARM cortex A53 M4 工控板上一条 /1 下一条

Archiver|手机版|小黑屋|天嵌 嵌入式开发社区 ( 粤ICP备11094220号-2 )

GMT+8, 2024-9-30 07:25 , Processed in 1.013711 second(s), 18 queries .

Powered by Discuz! X3.4 Licensed

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表