在内核模块编程中,或许会发现有这样的一些特殊关键字
__init ,_initdata ,__exit
等等,其实这些都是gcc的扩展属性:
__init
宏最常用的地方是驱动模块初始化函数的定义处,其目的是将驱动模块的初始化函数放入名叫
.init.text
的段。当内核启动完毕后,这个段中的内存会被释放掉供其他使用。
__initdata
宏用于数据定义,目的是将数据放入名叫
.init.data
的段。其它几个宏也类似。