linux核心模組

2021-08-15 16:38:39 字數 1253 閱讀 9146

綜述:如今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...