日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 运维知识 > linux >内容正文

linux

十三、linux 内核驱动模块传参数

發(fā)布時間:2025/4/5 linux 18 豆豆
生活随笔 收集整理的這篇文章主要介紹了 十三、linux 内核驱动模块传参数 小編覺得挺不錯的,現(xiàn)在分享給大家,幫大家做個參考.

????????在加載模塊的時候,可以向它傳參數(shù)。

單個參數(shù):

????????內(nèi)核模塊可以通過module_param來傳單個參數(shù)

????????????????– module_param(name,type,perm)
????????????????– name:模塊參數(shù)的名稱
????????????????– type: 模塊參數(shù)的數(shù)據(jù)類型(支持int long short uint ulong ushort類型)
????????????????– perm: 模塊參數(shù)的訪問權限(S_IRUSR參數(shù)表示所有文件所有者可讀)

????????????????– 頭文件在“include/linux/moduleparam.h”?

多個參數(shù):

????????傳遞多個參數(shù)module_param_array(name, type, nump, perm)
????????????????– name:模塊參數(shù)的名稱
????????????????– type: 模塊參數(shù)的數(shù)據(jù)類型(支持int long short uint ulong ushort類型)
????????????????– nump:保存參數(shù)個數(shù)的地址
????????????????– perm: 模塊參數(shù)的訪問權限(S_IRUSR參數(shù)表示所有文件所有者可讀)

? 參數(shù)perm表示此參數(shù)在sysfs文件系統(tǒng)中所對應的文件節(jié)點的屬性,其權限在include/linux/stat.h中有定義。
? 變量perm
????????– #defineS_IRUSR 00400文件所有者可讀
????????– #defineS_IWUSR00200文件所有者可寫
????????– #defineS_IXUSR 00100文件所有者可執(zhí)行
????????– #defineS_IRGRP00040與文件所有者同組的用戶可讀
????????– #defineS_IWGRP00020
????????– #defineS_IXGRP 00010
????????– #defineS_IROTH 00004與文件所有者不同組的用戶可讀
????????– #defineS_IWOTH00002
????????– #defineS_IXOTH 00001
? 將數(shù)字最后三位轉化為二進制:xxx xxx xxx,高位往低位依次看,第一位為1表示文件所有者可讀,第二位為1表示文件所有者可寫,第三位為1表示文件所有者可執(zhí)行;接下來三位表示文件所有者同組成員的權限;再下來三位為不同組用戶權限。

#include <linux/init.h> /*包含初始化宏定義的頭文件,代碼中的module_init和module_exit在此文件中*/ #include <linux/module.h> /*包含初始化加載模塊的頭文件,代碼中的MODULE_LICENSE在此頭文件中*//*定義module_param module_param_array的頭文件*/ #include <linux/moduleparam.h> /*定義module_param module_param_array中perm的頭文件*/ #include <linux/stat.h>MODULE_LICENSE("Dual BSD/GPL"); /*聲明是開源的,沒有內(nèi)核版本限制*/ MODULE_AUTHOR("iTOPEET_dz"); /*聲明作者*/static int module_arg1,module_arg2; static int int_array[50]; static int int_num;module_param(module_arg1,int,S_IRUSR);module_param(module_arg2,int,S_IRUSR);module_param_array(int_array,int,&int_num,S_IRUSR);static int hello_init(void) {int i;printk(KERN_EMERG "module_arg1 is %d!\n",module_arg1);printk(KERN_EMERG "module_arg2 is %d!\n",module_arg2);for(i=0;i<int_num;i++){printk(KERN_EMERG "int_array[%d] is %d!\n",i,int_array[i]);}printk(KERN_EMERG "Hello World enter!\n");/*打印信息,KERN_EMERG表示緊急信息*/return 0; }static void hello_exit(void) {printk(KERN_EMERG "Hello world exit!\n"); }module_init(hello_init); /*初始化函數(shù)*/ module_exit(hello_exit); /*卸載函數(shù)*/

?

?

總結

以上是生活随笔為你收集整理的十三、linux 内核驱动模块传参数的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網(wǎng)站內(nèi)容還不錯,歡迎將生活随笔推薦給好友。