kernel_init标记为__ref

时间:2018-10-07 01:59:08

标签: linux linux-kernel

在阅读linux内核源代码时,我注意到kernel_init函数用__ref注释。

我知道,__ref注释是为了防止在引用标注为__init的数据/代码时出现modpost警告。在这种特定情况下,kernel_init调用标记为kernel_init_freeable的{​​{1}}。为什么__init本身没有标记kernel_init

1 个答案:

答案 0 :(得分:0)

标记为__init的代码将在内核初始化完成后放入“释放”的单独部分(这意味着,它占用的内存将放入空闲列表中,以供以后用于其他目的)。

这实际上是由从kernel_init()调用的free_initmem()完成的。 因此,标记kernel_init()将导致它在执行完成之前被释放。