在 Linux 内核源代码中,__init
是一个特殊的宏,用于标记在内核初始化阶段使用的变量或函数。这个宏的作用是告诉内核编译器和链接器,被标记的变量或函数只在内核的初始化阶段使用,在系统启动完成后就不再需要了。因此,这些变量或函数占用的内存可以在系统启动后被回收和重用。
__init
宏的作用
-
内存回收:被
__init
标记的变量或函数在内核初始化完成后可以被回收,这有助于减少内核的内存占用。 -
代码清理:使用
__init
宏可以帮助开发者识别哪些代码只在初始化阶段运行,从而更容易管理和维护代码。 -
编译优化:内核编译器可以利用
__init
宏进行编译优化,例如,可以删除未使用的初始化代码,以减小内核的大小。
__init
宏的使用
• 标记初始化函数:在内核模块或内核初始化代码中,可以使用module_init()
或subsys_initcall()
等宏来标记初始化函数,这些宏内部会使用__init
来标记函数。
static int __init my_init_function(void