在阅读linux内核源代码时,我注意到kernel_init
函数用__ref
注释。
我知道,__ref
注释是为了防止在引用标注为__init
的数据/代码时出现modpost警告。在这种特定情况下,kernel_init
调用标记为kernel_init_freeable
的{{1}}。为什么__init
本身没有标记kernel_init
?
答案 0 :(得分:0)
标记为__init的代码将在内核初始化完成后放入“释放”的单独部分(这意味着,它占用的内存将放入空闲列表中,以供以后用于其他目的)。
这实际上是由从kernel_init()调用的free_initmem()完成的。 因此,标记kernel_init()将导致它在执行完成之前被释放。