在用戶態(tài)下編程可以通過(guò)main()的來(lái)傳遞命令行參數(shù),而編寫一個(gè)內(nèi)核模塊則通過(guò)module_param()
參數(shù)用 moudle_param 宏定義來(lái)聲明, 它定義在 moduleparam.h.
module_param(name,type,perm);
module_param 使用了 3 個(gè)參數(shù): 變量名, 它的類型, 以及一個(gè)權(quán)限掩碼用來(lái)做一個(gè)輔助的 sysfs 入口(啥意思). 這個(gè)宏定義應(yīng)當(dāng)放在任何函數(shù)之外, 典型地是出現(xiàn)在源文件的前面.定義如:
static char *whom = "world";
static int howmany = 1;
module_param(howmany, int, S_IRUGO);
module_param(whom, charp, S_IRUGO);
模塊參數(shù)支持許多類型:
perm參數(shù)的作用是什么?
最后的 module_param 字段是一個(gè)權(quán)限值; 你應(yīng)當(dāng)使用 <linux/stat.h> 中定義的值. 這個(gè)值控制誰(shuí)可以存取這些模塊參數(shù)在 sysfs 中的表示.如果 perm 被設(shè)為 0, 就根本沒(méi)有 sysfs 項(xiàng). 否則, 它出現(xiàn)在 /sys/module下面, 帶有給定的權(quán)限. 使用 S_IRUGO 作為參數(shù)可以被所有人讀取, 但是不能改變; S_IRUGO|S_IWUSR 允許 root 來(lái)改變參數(shù). 注意, 如果一個(gè)參數(shù)被 sysfs 修改, 你的模塊看到的參數(shù)值也改變了, 但是你的模塊沒(méi)有任何其他的通知. 你應(yīng)當(dāng)不要使模塊參數(shù)可寫, 除非你準(zhǔn)備好檢測(cè)這個(gè)改變并且因而作出反應(yīng).
怎么傳入一個(gè)自定義的類型
聯(lián)系客服