![]() |
|
Linux內(nèi)核模塊程序結(jié)構(gòu) |
|
Linux設(shè)備驅(qū)動會以內(nèi)核模塊的形式出現(xiàn),因此,學(xué)會編寫Linux內(nèi)核模塊編程是學(xué)習(xí)Linux設(shè)備驅(qū)動的先決條件。一個Linux內(nèi)核模塊主要由如下幾個部分組成: (1)模塊加載函數(shù)(一般需要)。 當(dāng)通過insmod或modprobe命令加載內(nèi)核模塊時,模塊的加載函數(shù)會自動被內(nèi)核執(zhí)行,完成本模塊的相關(guān)初始化工作。 (2)模塊卸載函數(shù)(一般需要)。 當(dāng)通過rmmod命令卸載某模塊時,模塊的卸載函數(shù)會自動被內(nèi)核執(zhí)行,完成與模塊卸載函數(shù)相反的功能。 (3)模塊許可證聲明(必須)。 許可證(LICENSE)聲明描述內(nèi)核模塊的許可權(quán)限,如果不聲明LICENSE,模塊被加載時,將收到內(nèi)核被污染 (kernel tainted)的警告。 在Linux 2.6內(nèi)核中,可接受的LICENSE包括"GPL"、"GPL v2"、"GPL and additional rights"、"Dual BSD/GPL"、"Dual MPL/GPL"和"Proprietary"。 大多數(shù)情況下,內(nèi)核模塊應(yīng)遵循GPL兼容許可權(quán)。Linux 2.6內(nèi)核模塊常見的是以MODULE_LICENSE( "Dual BSD/GPL" )語句聲明模塊采用BSD/GPL雙LICENSE。 (4)模塊參數(shù)(可選)。 模塊參數(shù)是模塊被加載的時候可以被傳遞給它的值,它本身對應(yīng)模塊內(nèi)部的全局變量。 (5)模塊導(dǎo)出符號(可選)。 內(nèi)核模塊可以導(dǎo)出符號(symbol,對應(yīng)于函數(shù)或變量),這樣其他模塊可以使用本模塊中的變量或函數(shù)。 (6)模塊作者等信息聲明(可選)。 華清遠(yuǎn)見嵌入式linux視頻教程免費(fèi)下載 熱點鏈接:
1、典型嵌入式Linux系統(tǒng)設(shè)置 |