__init __initdata __exit __exitdata解析

来源:互联网 发布:淘宝供应链金融 编辑:程序博客网 时间:2024/05/17 06:07
内核中,有很多函数和变量被一些特定的修饰符所修饰,这在以往的C语言编程是不常见的。说明如下:     

#define __init __attribute__ ((__section__ (".init.text")))
#define __initdata __attribute__ ((__section__ (".init.data")))

#define __exitdata __attribute__ ((__section__(".exit.data")))

#define __exit_call __attribute_used__ __attribute__ ((__section__ (".exitcall.exit")))

 

#ifdef MODULE

      #define __exit __attribute__ ((__section__(".exit.text")))

#else

      #define __exit __attribute_used__ __attribute__ ((__section__(".exit.text")))

#endif

      其中,__init和__exit标记函数,__initdata和__exitdata标记数据。__init宏使内建模块中的init函数在执行完成后释放掉,不过可装载的模块是不受影响的。__exit宏会使那些内建到内核的模块省略掉cleanup函数,不过和__init一样,对loadable模块没影响。