温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

linux驱动--传递参数给驱动

发布时间:2020-05-30 19:51:33 来源:网络 阅读:632 作者:Denboa 栏目:安全技术

1需要办的头文件

头文件在“include/linux/moduleparam.h”

2函数说明

2.1 内核模块可以通过module_param来传单个参数

– module_param(name,type,perm)
– name:模块参数的名称
– type: 模块参数的数据类型(支持int long short uint ulong ushort类
型)
– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者
可读)

2.2传递多个参数module_param_array(name, type, nump, perm)

– name:模块参数的名称
– type: 模块参数的数据类型(支持int long short uint ulong ushort类
型)
– nump:保存参数个数的地址
– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者
可读)

2.3参数的访问权限

参数perm表示此参数在sysfs文件系统中所对应的文件节点的属性,其权限在
include/linux/stat.h中有定义。
• 变量perm
– #defineS_IRUSR 00400文件所有者可读
– #defineS_IWUSR00200文件所有者可写
– #defineS_IXUSR 00100文件所有者可执行
– #defineS_IRGRP00040与文件所有者同组的用户可读
– #defineS_IWGRP00020
– #defineS_IXGRP 00010
– #defineS_IROTH 00004与文件所有者不同组的用户可读
– #defineS_IWOTH00002
– #defineS_IXOTH 00001
• 将数字最后三位转化为二进制:xxx xxx xxx,高位往低位依次看,第一位为1表示文
件所有者可读,第二位为1表示文件所有者可写,第三位为1表示文件所有者可执
行;接下来三位表示文件所有者同组成员的权限;再下来三位为不同组用户权限

3用法源码举例

*定义module_param module_param_array的头文件*/#include <linux/moduleparam.h>/*定义module_param module_param_array中perm的头文件*/#include <linux/stat.h>MODULE_LICENSE("Dual BSD/GPL");/*声明是开源的,没有内核版本限制*/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;
}

4传递参数的命令

insmod /mnt/udisk/module_param.ko module_arg1=10 module_arg2=20
int_array=11,12,13,14,15,16,17,18

cat /sys/module/module_param/parameters/xxx 可以查询参数

向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI