1.定義模組引數的方法:
module_param(name, type, perm);
其中,name:表示引數的名字;
type:表示引數的型別;
perm:表示引數的訪問許可權;
2. 陣列型別模組引數的定義:
用逗號間隔的列表提供的值;
宣告乙個陣列引數:
module_param_array(name, type, num, perm);
其中,name:表示陣列的名字;
type:表示引數的型別;
num :表示陣列中元素數量;
perm:表示引數的訪問許可權;
3.type支援的基本型別有:
bool :布林型別
invbool:顛倒了值的bool型別;
charp :字元指標型別,記憶體為使用者提供的字串分配;
int :整型
long :長整型
short :短整型
uint :無符號整型
ulong :無符號長整型
ushort :無符號短整型
4. perm引數 設定訪問許可權
modlue_param和module_param_array中的perm用於設定該引數的訪問許可權;
perm表示該引數在sysfs檔案系統中所對應的檔案節點的屬性;你用該使用中定義的許可權值;這個值控制誰可以訪問這些模組引數在sysfs檔案系統中的表示;當perm為0時,表示此引數不存在sysfs檔案系統下對應的檔案節點;否則,模組被載入後,在/sys/module/目錄下將會出現以此模組名命名的目錄,帶有給定的許可權;
比如:#define s_irwxu 00700
#define s_irusr 00400
#define s_iwusr 00200
#define s_ixusr 00100
#define s_irwxg 00070
#define s_irgrp 00040
#define s_iwgrp 00020
#define s_ixgrp 00010
#define s_irwxo 00007
#define s_iroth 00004
#define s_iwoth 00002
#define s_ixoth 00001
注意:如果乙個引數被sysfs修改了,那麼你的模組看到的引數值也被修改了,但是你的模組不會收到任何通知;你應當不要使模組引數可寫,除非你準備好檢測這個改變並因而作出反應;
5. 也可以在insmod(裝載模組)的時候為引數指定值,如果沒有指定則使用預設值,如下面的例子。
module_license("dual bsd/gpl");
static int num=10;
module_param(num,int,s_irugo);
static int hello_init(void)
static void hello_exit(void)
module_init(hello_init);
module_exit(hello_exit);
module_description("a ****** module");
module_alias("hello");
上面的num=10,則10是引數num的預設值。
儲存為原始檔hello.c, 編譯生成hello.ko , 當我們使用insmod進行載入時, 使用
insmod hello.ko num=20
則可以 cat /sys/module/hello/parameters/num ,看到為 20
Linux核心 了解Linux核心搶占
目錄 無強制搶占 可搶占核心 自願核心搶占 完全實時搶占 在配置linux核心時,我們可以設定一些影響系統行為的引數。您可以使用不同的優先順序,排程類和搶占模型。了解並選擇正確的引數非常重要。在這篇文章中,我將介紹不同的搶占模型,以及每種模型如何影響使用者和核心行為 如果配置核心 使用make me...
Linux 核心 vs Windows 核心
windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們就來看看,linux 核...
Linux 核心 vs Windows 核心
作者丨小林coding windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們...