__init __initdata __exit __exitdata解析

內核中,有很多函數和變量被一些特定的修飾符所修飾,這在以往的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模塊沒影響。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章