Linux设备驱动程序 之 模块参数
2024-09-03 22:25:53
模块支持参数的方法
内核允许驱动程序指定参数,这些参数可在运行insmod或者modprobe命令装载模块时赋值,modprobe还可以从它的配置文件(/etc/modporb.conf)中读取参数值;
insmod加载模块时指定参数的方式如下:
insmod hellop howmany= whom="Mom"
在模块文件中,需要定义参数:
static char *whom = "world";
static int howmany = ;
module_param(howmany, int, S_IRUGO);
module_param(whom, charp, S_IRUGO);
内核支持的模块参数类型如下
bool && invbool 布尔值,invbool类型对值进行反转,true变为false,false变为true;
int long short uint ulong ushort 具有不同长度的基本类型值;u开头表示无符号值;
module_param_array(name,type,perm);
name-参数名称;
type-元素的类型;
perm-访问许可;
模块装载器也支持数组参数,提供数组值时用逗号划分各个数组成员,需要使用的宏如下:
module_param_array(name,type,num,perm);
name-数组名称,也就是参数名称;
type-数组元素的类型;
num-数组元素的个数;
perm-访问许可;
关于perm
module_param的最后一个成员是访问许可值,我们应使用<linux/stat.h>中存在的定义指定该值,这个值用来控制谁能够访问sysfs中对模块参数的表述。如果pem被设置为0,就不会有对应的访问许可。如果对参数使用S_IRUGO,则任何人都可以读取该参数,但不能修改;S_IRUGO|S_IWUSR允许root用户修改该参数。注意,如果一个参数通过sysfs被修改,则如果模块修改了这个参数值一样,但是内核不会以任何方式通知模块。大多数情况下,我们不应让模块参数可写,除非我们打算检测这种修改并作出动作;
最新文章
- [LeetCode] Set Matrix Zeroes 矩阵赋零
- C语言基础(一)
- myeclipse下java文件乱码问题解决
- July 1st, Week 27th Friday, 2016
- 【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
- 安卓开发笔记——重识Activity
- 如何在Linux桌面环境下自动启动程序?
- HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值
- Tomcat访问路径去掉发布项目的项目名称
- Windows驱动——读书笔记《Windows驱动开发技术详解》
- 基于CSS属性display:table的表格布局的使用
- oracle flashback data archive闪回数据归档天坑之XID重用导致闪回查询数据重复
- Linux下rsync daemon模式下的错误汇总
- 如何成为一名Top DevOps Engineer
- Error:The supplied javaHome seems to be invalid. I cannot find the java executable. Tried location:
- 个人学习jQuery笔记
- CSS:Tutorial two
- 洛谷 P2909 [USACO08OPEN]牛的车Cow Cars
- Linux运维工作中需要掌握的知识
- Servlet单例模式(注意)