綜述:如今linux核心整體框架十分龐大,我們如果直接把所有所需的功能編譯進核心,會導致核心十分龐大,且在現有核心中我們無法對其增減。所以linux提供一種機制--模組。我們可以根據需要,對模組進行刪減。
一)乙個linux核心模組主要由如下幾個部分組成
1 模組載入函式 當通過insmod或者modprobe命令載入核心模組時,
***_init會被執行。
static int _init ***_init(void)
注意還要通過如下**,告知核心,此為模組載入函式
module_init(
***_init);
2 模組解除安裝函式 當通過執行rmmod命令時,
***_exit該函式會被執行。
static int _exit ***_exit(void)
注意還要通過如下**,告知核心,此為模組解除安裝函式
modul_exit(
***_exit);
3 模組許可證宣告
許可證宣告描述核心的許可許可權,如果不宣告許可證,將收到核心被汙染的警告。
相關**為:module_license("gpl");
4 模組引數 (可選)
模組引數是模組被載入時可以傳遞給它的值。
相關操作如下:
static int mod_num=0;
module_param(mod_num,int,s_irugo); //函式引數依次為 變數名,型別,讀/寫許可權
insmod ***.ko mod_num=100 //在使用者執行時輸入該命令,則mod_num將被賦值為100
我們可以在/sys/module/***/parameters 目錄下使用 cat mod_num 命令檢視mod_num的值
5 匯出符號
若匯出,其他模組則可以使用本模組的變數或函式。
相關**如下
void ***_fun()
export_symbol_gpl(***_fun);
6 模組宣告與描述
我們可以用
module_author(author);
module_version(version_string);
並且我們可以使用如下命令。檢視模組的資訊
modinfo 《模組名》
Linux核心模組
核心模組 在整個啟動的過程中,是否能成功的驅動我們主句的硬體裝置,是核心完成的工作,而核心一般都是壓縮文件,在使用之前核心之前必須要將核心減壓到的記憶體中。為了應對日新月異的硬體,目前核心都具有可讀取模組化驅動程式的功能,也就是所謂的 modules模組化 所謂模組化。核心與核心模組放在 核心 bo...
Linux核心模組
1 核心模組註冊登出 塊載入函式有返回值,模組解除安裝函式無返回值。兩者都是無參函式,載入函式用 init修飾,解除安裝函式用 exit修飾。define init attribute section init.text define exit atrribute section exit,text...
Linux 核心模組
linux 核心模組程式結構 1 模組載入函式 2 模組解除安裝函式 3 模組許可證宣告 4 模組引數 5 模組匯出符號 6 模組作者等資訊宣告 模組載入函式 一般以 init 標識 在 linux 中,所有標識為 init 的函式如果直接編譯進核心,成為核心映象的一部分,在連線的時候都會放在 in...