1

我发现在 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我现在唯一的选择吗?

4

1 回答 1

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);

另请参阅:https ://stackoverflow.com/a/12095263/2908724

于 2013-11-03T04:56:40.800 回答