Linux核心module param的使用

2021-08-29 20:31:46 字數 1735 閱讀 2394

原作者鏈結

1.定義模組引數的方法:

module_param(name, type, perm);

其中,name:表示引數的名字;

type:表示引數的型別;

perm:表示引數的訪問許可權;

陣列型別模組引數的定義:

用逗號間隔的列表提供的值;

宣告乙個陣列引數:

module_param_array(name, type, num, perm);

其中,name:表示陣列的名字;

type:表示引數的型別;

num :表示陣列中元素數量;

perm:表示引數的訪問許可權;

3.type支援的基本型別有:

bool :布林型別

invbool:顛倒了值的bool型別;

charp :字元指標型別,記憶體為使用者提供的字串分配;

int :整型

long :長整型

short :短整型

uint :無符號整型

ulong :無符號長整型

ushort :無符號短整型

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修改了,那麼你的模組看到的引數值也被修改了,但是你的模組不會收到任何通知;你應當不要使模組引數可寫,除非你準備好檢測這個改變並因而作出反應;

也可以在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

Linux核心 了解Linux核心搶占

目錄 無強制搶占 可搶占核心 自願核心搶占 完全實時搶占 在配置linux核心時,我們可以設定一些影響系統行為的引數。您可以使用不同的優先順序,排程類和搶占模型。了解並選擇正確的引數非常重要。在這篇文章中,我將介紹不同的搶占模型,以及每種模型如何影響使用者和核心行為 如果配置核心 使用make me...

Linux 核心 vs Windows 核心

windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們就來看看,linux 核...

Linux 核心 vs Windows 核心

作者丨小林coding windows 和 linux 可以說是我們比較常見的兩款作業系統的。windows 基本占領了電腦時代的市場,商業上取得了很大成功,但是它並不開源,所以要想接觸原始碼得加入 windows 的開發團隊中。這兩個作業系統各有千秋,不分伯仲。作業系統核心的東西就是核心,這次我們...