百度空间 | 百度首页 
 
查看文章
 
gfp_zone
2009-09-24 17:05
gfp_zone函数作用:
根据gfp flag确定选择哪一个zone来分配内存。

static inline enum zone_type gfp_zone(gfp_t flags)
{
enum zone_type z;
int bit = flags & GFP_ZONEMASK;  //获取zone相关的flag

z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) &
((1 << ZONES_SHIFT) - 1);
/*这里用到了GFP_ZONE_TABLE。zone的最大值所占用的bit数位ZONES_SHIFT。flag有各种的组合,0到组合的最大值都分别对应一个zone值,也就是需要占用ZONES_SHIFT bit数。(bit * ZONES_SHIFT)就是指组合值bit对应在zone table里所占用bit数的起始值。((1 << ZONES_SHIFT) - 1)为ZONES_SHIFT个1。*/
if (__builtin_constant_p(bit))
BUILD_BUG_ON((GFP_ZONE_BAD >> bit) & 1);
else {
#ifdef CONFIG_DEBUG_VM
BUG_ON((GFP_ZONE_BAD >> bit) & 1);
#endif
}
return z;
}

类别:Linux | 添加到搜藏 | 浏览() | 评论 (0)
 
最近读者:
 
网友评论:
发表评论:
姓 名:
网址或邮箱: (选填)
内 容:
验证码: 请点击后输入四位验证码,字母不区分大小写
      

     

©2009 Baidu