内核使用 gfp_zone(gfp) 函数来将 gfp 标志转换为对应的 zone.其实现如下: 点击(此处)折叠或打开 static inline enum zone_type gfp_zone(gfp_t flags) { enum zone_type z; int bit = (int)(flags & GFP_ZONEMASK); z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & ((1 << ZONES_SHIFT) ...
源码路径 :linux-4.12\include\linux\gfp.h#18 三、GFP_ZONE_TABLE 标志位区域类型映射表 Linux 内核中 , 使用了GFP_ZONE_TABLE宏 , 定义了 " 标志位组合 " 与 " 区域类型 " 之间的映射 , GFP_ZONES_SHIFT是 区域类型 对应的 位数 , GFP_ZONE_TABLE中 , 每个 标志位组合 映射到 32 位的 整型 的指...
GFP_ZONE_TABLE 中 , 每个 标志位组合 映射到 32 32 32 位的 整型 的指定位置 , 其中 偏移 是 标志组合 * 区域类型位数 ; AI检测代码解析 #define GFP_ZONE_TABLE ( \ (ZONE_NORMAL << 0 * GFP_ZONES_SHIFT) \ | (OPT_ZONE_DMA << ___GFP_DMA * GFP_ZONES_SHIFT) \ | (O...
内核使用 gfp_zone(gfp) 函数来将 gfp 标志转换为对应的 zone.其实现如下: 点击(此处)折叠或打开 static inline enum zone_type gfp_zone(gfp_t flags) { enum zone_type z; int bit = (int)(flags & GFP_ZONEMASK); z = (GFP_ZONE_TABLE >> (bit * ZONES_SHIFT)) & ((1 << ZONES_SHIFT) ...