目錄
5.模組傳參
5.1模組傳參函式
5.2模組傳遞字串引數函式
5.3模組傳遞陣列引數函
模擬應用層**傳參:
//應用層
int main(int argc,char *ar**);
int mian(int argc,char **ar**);
在 執行程式的時候,可以通過命令列的方式給main函式傳遞引數
//同樣在執行核心模組的時候,也可以給核心模組傳參
/linux/moduleparam.h標頭檔案包含模組傳參的資訊
module_param(name,type,perm)
功能:核心模組傳參
引數:name: 變數名
type:引數的資料型別
perm:許可權(0644),在sysfs可見
一般情況下,我們不需要在模組執行以後,進行引數傳遞,所以perm許可權一般設定成0
1 #include 2 #include 3 #include 4 #include 5
6 int num = 10;
7 8
9 10 module_param(num, int, 0644);
11 12
13 int __init demo_init(void)
14 19
20 void __exit demo_exit(void)
21
在載入核心模組的時候進行引數的傳遞
載入模組的時候不去傳參,預設引數是10
去此路徑下可以找到對應的引數檔案,許可權是644
功能: 模組傳參
name: 外部傳參名 外部傳參名一般情況下和內部變數名設定成一樣的
string: 內部變數名
len:長度
perm:許可權
#define n 32
8 9 char buf[n] = "adaswe";
10 int num = 10;
11 char *p = "hello";
12 module_param(num, int, 0644);
13 module_param(p, charp, 0);
14 module_param_string(buf_ex,buf,n,0);
15 int __init demo_init(void)
16
編譯,執行:
dmesg列印核心資訊:
name:引數名
type:型別 int short ushort charp
nump: 指標型別,該位址存放的是傳入的引數個數(陣列元素的個數)
perm:許可權,在sysfs可見
dmesg列印資訊
實現模組間函式相互呼叫
先宣告外部函式,然後再呼叫
export_symbol_gpl匯出符號表後,其他模組函式可以呼叫此函式
moudule.symvers是匯出符號表檔案,usr想呼叫exp的func函式的話必須有此檔案,否則編譯會報錯
載入完畢後dmesg檢視資訊
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...