在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()
参数用 moudle_param 宏定义来声明, 它定义在 moduleparam.h.
module_param(name,type,perm);
module_param 使用了 3 个参数: 变量名, 它的类型, 以及一个权限掩码用来做一个辅助的 sysfs 入口(啥意思). 这个宏定义应当放在任何函数之外, 典型地是出现在源文件的前面.定义如:
static char *whom = "world";
static int howmany = 1;
module_param(howmany, int, S_IRUGO);
module_param(whom, charp, S_IRUGO);
模块参数支持许多类型:
bool
invbool
一个布尔型( true 或者 false)值(相关的变量应当是 int 类型). invbool 类型颠倒了值, 所以真值变成 false, 反之亦然.
charp
一个字符指针值. 内存为用户提供的字串分配, 指针因此设置.
int
long
short
uint
ulong
ushort
基本的变长整型值. 以 u 开头的是无符号值.
数组参数, 用逗号间隔的列表提供的值, 模块加载者也支持. 声明一个数组参数, 使用:
module_param_array(name,type,num,perm);
这里 name 是你的数组的名子(也是参数名),
type 是数组元素的类型,
num 是一个整型变量,
perm 是通常的权限值.
如果数组参数在加载时设置, num 被设置成提供的数的个数. 模块加载者拒绝比数组能放下的多的值.
perm参数的作用是什么?
最后的 module_param 字段是一个权限值; 你应当使用 <linux> 中定义的值. 这个值控制谁可以存取这些模块参数在 sysfs 中的表示.如果 perm 被设为 0, 就根本没有 sysfs 项. 否则, 它出现在 /sys/module下面, 带有给定的权限. 使用 S_IRUGO 作为参数可以被所有人读取, 但是不能改变; S_IRUGO|S_IWUSR 允许 root 来改变参数. 注意, 如果一个参数被 sysfs 修改, 你的模块看到的参数值也改变了, 但是你的模块没有任何其他的通知. 你应当不要使模块参数可写, 除非你准备好检测这个改变并且因而作出反应.
分享到:
相关推荐
module_param内核函数的意思
module_param使用测试完整例程(含Makefile),更多详情,见文章: https://dingdong.blog.csdn.net/article/details/106355202
应用范围 在使用Loadrunner进行性能测试时,经常遇到一种情况,需要通过web页面修改某事务的状态。... 参数说明:ParamName:存放得到的动态内容的参数名称listofAttributes:其它属性,包括:Notfound,LB,RB,RelFra
这是我在使用LoadRunner过程中总结的,上传上来供需要的人使用,希望能对你有所帮助,(*^__^*) 嘻嘻…… 坚决支持资源共享
DV_vs_HDR10_PARAM.pdf
assert_param-转载
1. 模块参数 在驱动定义变量 static int num = 0; //当加载模块不指定num的值时则为0 module_param(变量名, 类型, 权限);类型: byte, int, uint, short, ushort, long, ulong, bool, charp,权限不能有写的权限 ...
本文是关于assert_param的疑惑。
STM32中assert_param的使用,综合网上多种说法,看完不一样的感觉。
结构体struct module在内核中代表一个内核模块,通过insmod(实际执行init_module系统调用)把自己编写的内核模块插入内核时,模块便与一个struct module结构体相关联,并成为内核的一部分。下面是结构体struct module...
1. 该函数绑定了 SQL 的参数,且告诉数据库参数的值。 “sss” 参数列处理其余参数的数据类型。s 字符告诉数据库该参数为字符串。 参数有以下四种类型: i – integer(整型) d – double(双精度浮点型) s – ...
自然语言转SQL任务 https://github.com/guotong1988/NL2SQL-RULE 用的数据
S2P模型参数稳定性评估计算器,方便稳定性设计
NULL 博文链接:https://lindows.iteye.com/blog/1273992
9_display_param.cfg
6_display_param.cfg
01_param介绍1