嵌入式:關(guān)于Linux下_init與_exit的解釋
include/linux/init.h
本文引用地址:http://www.ex-cimer.com/article/201609/303922.htm#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標(biāo)記函數(shù),__initdata和__exitdata標(biāo)記數(shù)據(jù)。
此宏定義可知標(biāo)記后的函數(shù)與數(shù)據(jù)其實(shí)是放到了特定的(代碼或數(shù)據(jù))段中。
標(biāo)記為初始化的函數(shù),表明該函數(shù)供在初始化期間使用。
在模塊裝載之后,模塊裝載就會(huì)將初始化函數(shù)扔掉。這樣可以將該函數(shù)占用的內(nèi)存釋放出來。
__exit修飾詞標(biāo)記函數(shù)只在模塊卸載時(shí)使用。
如果模塊被直接編進(jìn)內(nèi)核則該函數(shù)就不會(huì)被調(diào)用。如果內(nèi)核編譯時(shí)沒有包含該模塊,則此標(biāo)記的函數(shù)將被簡(jiǎn)單地丟棄。
評(píng)論