基于2.6.32内核源码分析 首选内存区和gfp描述符关系运算 64位系统默认没有开启CONFIG_HIGHMEM选项,因此只有4个内存区DMA(0),DMA32(1),NORMAL(2),MOVABLE(3),因此在gfp标志中关于内存区选择的标志有如下4个,并通过宏GFP_ZONEMASK从gfp标志中提取出这些个标志. 然后通过一个人工定义的映射表将上面的四个gfp标志映射为具体的内存区,进而确定分配内存时首选内存区. #define __GFP_DMA ((__force gfp_t)0…