曲径通幽论坛

标题: __init, __initdata [打印本页]

作者: beyes    时间: 2011-1-12 23:22
标题: __init, __initdata
__init 和 __initdata 定义在 include/linux/init.h 中
#define __init        __attribute__ ((__section__ (".init.text"))) __cold
#define __initdata    __attribute__ ((__section__ (".init.data")))

一般情况下,编译器会将函数放在 .text 段里,变量则放在 .data 或 .bss 中。

在上面的宏定义中,__init 修饰的代码放在 .init.text 段中;__initdata 修饰的数据则放在 .init.data 段中。

在链接阶段,连接器会把相同段中的代码放在一起。

__init 修饰的所有代码在初始化结束后,它们所占用的内存都会得到释放;同理,__initdata 修饰的数据,在初始化后其占用的内存也会得到释放。




欢迎光临 曲径通幽论坛 (http://www.groad.net/bbs/) Powered by Discuz! X3.2