我发现linux 3.0+ GFP_ZERO
不再在标题中定义。
我在gfp.h中找到的只是,
/* Plain integer GFP bitmasks. Do not use this directly. */
...
#define ___GFP_ZERO 0x8000u
我检查了那些“导出”位掩码,其中一个使用GFP_ZERO
。
作者说Do not use this directly
,那么,我应该如何获得归零页面
kmalloc + memset
是我现在唯一的选择吗?
答案 0 :(得分:3)
我认为零的预期方式是kzalloc():
https://www.kernel.org/doc/htmldocs/kernel-api/API-kzalloc.html
但很明显alloc + memset也可以。
<强>更新强>
来自CFQ的示例差异显示预期的更新:
- cfqd = kmalloc_node(sizeof(*cfqd), GFP_KERNEL | __GFP_ZERO, q->node);
+ cfqd = kzalloc_node(sizeof(*cfqd), GFP_KERNEL, q->node);