您好,登錄后才能下訂單哦!
這篇文章主要介紹“linux param指的是什么”的相關知識,小編通過實際案例向大家展示操作過程,操作方法簡單快捷,實用性強,希望這篇“linux param指的是什么”文章能幫助大家解決問題。
linux param指的是“module_param”函數,其作用是傳遞命令行參數;在用戶態下編程可以通過“main()”的參數來傳遞命令行參數,而編寫一個內核模塊則通過“module_param()”來傳遞參數。
我們在用戶態寫程序時都喜歡用main函數的如果參數來向程序內傳遞數據
#include <stlib.h>
#include <stdio.h>
int main(int argc,char **argv)
{
exit(0);
}
其中argc為傳入程序內參數的個數,argv為傳入的參數 ,其中的第一個參數argv[0]為當前文件的含路徑的名字,所以實際傳入程序內的參數個數為argc-1個。
內核模塊中沒有main函數,所以向模塊內部傳入參數可以通過module_param這個宏定義來實現:
// 原型
#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
name:傳入參數名稱
type:傳入參數類型,有byte, short, ushort, int, uint, long, ulong, charp, bool,invbool這幾種類型
perm:這個為sysfs中資源的訪問權限,下面再細說,主要有以下權限類型在uapi/linux/stat.h中定義
#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 // 其他人可執行權限
模塊 代碼編寫:
#include <linux/module.h>
int num = 100;
module_param(num,int,S_IRUSR);
static int __init param_init(void)
{
printk("[%s] num = %d\r\n",__FUNCTION__,num);
return 0;
}
static void __exit param_exit(void)
{
printk("[%s] num = %d\r\n",__FUNCTION__,num)
}
module_init(param_init);
module_exit(param_exit);
MODULE_LICENSE("GPL");
MODULE_AUTHOR("Chen");
Makefile文件:
ifneq ($(KERNELRELEASE),)
obj-m:=param.o
else
KERNEL_DIR:=/lib/modules/$(shell uname -r)/build
CURRENT_DIR:=$(shell pwd)
ccflags-y:=-std=gnu99 -Wno-declaration-after-statement
all:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modules
clean:
$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) clean
endif
編譯 程序,安裝模塊,然后dmesg
模塊安裝后在/sys/module文件夾下會生成 對應模塊名字的文件夾,進入文件夾內
進入文件夾,文件夾內parameters文件夾內會會有之前程序中的num
從圖片中可以看出內核在文件系統中會生成對應的文件讓用戶訪問,并且模塊中module_param宏定義中的perm設置了用戶只讀權限,所以num文件權限與其對應。
當然你也可以設置可寫權限來改變輸入參數 的值,改變后內核模塊中的 該 參數會改變但是不會有任何信息提示。
關于“linux param指的是什么”的內容就介紹到這里了,感謝大家的閱讀。如果想了解更多行業相關的知識,可以關注億速云行業資訊頻道,小編每天都會為大家更新不同的知識點。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。