人妻精品在线观看一区二区三区,蜜臀av精品一区二区三区网站,中文一区二区三区亚洲欧美,熟女人妇精品一区二区,人妻av在线观看视频,欧美日韩国产三级精品网站,黄色免费网站直接进入,超碰公开福利正在播放,国产毛片乡下农村妇女毛片

linux param是什么

來源:php中文網(wǎng) | 2023-03-10 08:47:28 |

本教程操作環(huán)境:linux5.9.8系統(tǒng)、Dell G3電腦。

linux param是什么?

linux驅(qū)動(dòng)之module_param的用法


(資料圖片僅供參考)

從 main函數(shù)說起

我們?cè)谟脩魬B(tài)寫程序時(shí)都喜歡用main函數(shù)的如果參數(shù)來向程序內(nèi)傳遞數(shù)據(jù)

#include <stlib.h>#include <stdio.h>int main(int argc,char **argv){ exit(0);}

其中argc為傳入程序內(nèi)參數(shù)的個(gè)數(shù),argv為傳入的參數(shù) ,其中的第一個(gè)參數(shù)argv[0]為當(dāng)前文件的含路徑的名字,所以實(shí)際傳入程序內(nèi)的參數(shù)個(gè)數(shù)為argc-1個(gè)。

內(nèi)核模塊傳入?yún)?shù)

內(nèi)核模塊中沒有main函數(shù),所以向模塊內(nèi)部傳入?yún)?shù)可以通過module_param這個(gè)宏定義來實(shí)現(xiàn):

// 原型#define module_param(name, type, perm)     \module_param_named(name, name, type, perm)

name:傳入?yún)?shù)名稱 type:傳入?yún)?shù)類型,有byte, short, ushort, int, uint, long, ulong, charp, bool,invbool這幾種類型 perm:這個(gè)為sysfs中資源的訪問權(quán)限,下面再細(xì)說,主要有以下權(quán)限類型在uapi/linux/stat.h中定義

#define S_IRWXU 00700    // 用戶讀寫可執(zhí)行權(quán)限#define S_IRUSR 00400    // 用戶讀權(quán)限#define S_IWUSR 00200    // 用戶寫權(quán)限#define S_IXUSR 00100    // 用戶可執(zhí)行權(quán)限#define S_IRWXG 00070    // 用戶組讀寫可執(zhí)行權(quán)限#define S_IRGRP 00040    // 用戶組讀權(quán)限#define S_IWGRP 00020    // 用戶組寫權(quán)限#define S_IXGRP 00010    // 用戶組可執(zhí)行權(quán)限#define S_IRWXO 00007    // 其他人可讀寫執(zhí)行權(quán)限#define S_IROTH 00004    // 其他人可讀權(quán)限#define S_IWOTH 00002    // 其他人可寫權(quán)限#define S_IXOTH 00001    // 其他人可執(zhí)行權(quán)限

模塊 代碼編寫:

#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.oelseKERNEL_DIR:=/lib/modules/$(shell uname -r)/buildCURRENT_DIR:=$(shell pwd)ccflags-y:=-std=gnu99 -Wno-declaration-after-statementall:$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) modulesclean:$(MAKE) -C $(KERNEL_DIR) M=$(CURRENT_DIR) cleanendif

編譯 程序,安裝模塊,然后dmesg

模塊安裝后在/sys/module文件夾下會(huì)生成 對(duì)應(yīng)模塊名字的文件夾,進(jìn)入文件夾內(nèi)

進(jìn)入文件夾,文件夾內(nèi)parameters文件夾內(nèi)會(huì)會(huì)有之前程序中的num

從圖片中可以看出內(nèi)核在文件系統(tǒng)中會(huì)生成對(duì)應(yīng)的文件讓用戶訪問,并且模塊中module_param宏定義中的perm設(shè)置了用戶只讀權(quán)限,所以num文件權(quán)限與其對(duì)應(yīng)。 當(dāng)然你也可以設(shè)置可寫權(quán)限來改變輸入?yún)?shù) 的值,改變后內(nèi)核模塊中的 該 參數(shù)會(huì)改變但是不會(huì)有任何信息提示。

相關(guān)推薦:《Linux視頻教程》

以上就是linux param是什么的詳細(xì)內(nèi)容,更多請(qǐng)關(guān)注php中文網(wǎng)其它相關(guān)文章!

關(guān)鍵詞: