| 導購 | 订阅 | 在线投稿
分享
 
 
 

嵌入式:關于Linux下_init與_exit的解釋

來源:互聯網  2008-06-01 02:15:08  評論

原始定義:include/linux/init.h

#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標記數據。

此宏定義可知標記後的函數與數據其實是放到了特定的(代碼或數據)段中。

標記爲初始化的函數,表明該函數供在初始化期間使用。

在模塊裝載之後,模塊裝載就會將初始化函數扔掉。這樣可以將該函數占用的內存釋放出來。

__exit修飾詞標記函數只在模塊卸載時使用。

如果模塊被直接編進內核則該函數就不會被調用。如果內核編譯時沒有包含該模塊,則此標記的函數將被簡單地丟棄。

原始定義:include/linux/init.h #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標記數據。 此宏定義可知標記後的函數與數據其實是放到了特定的(代碼或數據)段中。 標記爲初始化的函數,表明該函數供在初始化期間使用。 在模塊裝載之後,模塊裝載就會將初始化函數扔掉。這樣可以將該函數占用的內存釋放出來。 __exit修飾詞標記函數只在模塊卸載時使用。 如果模塊被直接編進內核則該函數就不會被調用。如果內核編譯時沒有包含該模塊,則此標記的函數將被簡單地丟棄。
󰈣󰈤
王朝萬家燈火計劃
期待原創作者加盟
 
 
 
>>返回首頁<<
 
 
 
 
 熱帖排行
 
王朝網路微信公眾號
微信掃碼關註本站公眾號 wangchaonetcn
 
 
靜靜地坐在廢墟上,四周的荒凉一望無際,忽然覺得,淒涼也很美
© 2005- 王朝網路 版權所有