linux/init.h 中__init

原始定義:include/linux/init.h
__init和__exit標記函數,__initdata和__exitdata標記數據。

此宏定義可知標記後的函數與數據其實是放到了特定的(代碼或數據)段中。標記爲初始化的函數,表明該函數供在初始化期間使用。在模塊裝載之後,模塊裝載就會將初始化函數扔掉。這樣可以將該函數佔用的內存釋放出來。
 
__exit修飾詞標記函數只在模塊卸載時使用。如果模塊被直接編進內核則該函數就不會被調用。如果內核編譯時沒有包含該模塊,則此標記的函數將被簡單地丟棄。
 
_init不屬於c的標準在內核代碼裏,這個表示把這個函數放在.init.text section裏,在include/linux/init.h裏有定義
#define __init __attribute__ ((__section__ (".init.text")))
這個section的空間是會被回收的,section是和連接有關的概念

 

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