模块支持参数的方法

内核允许驱动程序指定参数,这些参数可在运行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被修改,则如果模块修改了这个参数值一样,但是内核不会以任何方式通知模块。大多数情况下,我们不应让模块参数可写,除非我们打算检测这种修改并作出动作;

最新文章

  1. [LeetCode] Set Matrix Zeroes 矩阵赋零
  2. C语言基础(一)
  3. myeclipse下java文件乱码问题解决
  4. July 1st, Week 27th Friday, 2016
  5. 【spring set注入 注入集合】 使用set注入的方式注入List集合和Map集合/将一个bean注入另一个Bean
  6. 安卓开发笔记——重识Activity
  7. 如何在Linux桌面环境下自动启动程序?
  8. HTML控件ID和NAME属性的区别,以及如何在asp.net页面的.CS文件中获得.ASPX页面中HTML控件的值
  9. Tomcat访问路径去掉发布项目的项目名称
  10. Windows驱动——读书笔记《Windows驱动开发技术详解》
  11. 基于CSS属性display:table的表格布局的使用
  12. oracle flashback data archive闪回数据归档天坑之XID重用导致闪回查询数据重复
  13. Linux下rsync daemon模式下的错误汇总
  14. 如何成为一名Top DevOps Engineer
  15. Error:The supplied javaHome seems to be invalid. I cannot find the java executable. Tried location:
  16. 个人学习jQuery笔记
  17. CSS:Tutorial two
  18. 洛谷 P2909 [USACO08OPEN]牛的车Cow Cars
  19. Linux运维工作中需要掌握的知识
  20. Servlet单例模式(注意)

热门文章

  1. Django rest-framework框架-用户权限实例
  2. 图片样式加hover特效
  3. 3.第一个MyBatis程序_进化
  4. Spring Cloud(八)高可用的分布式配置中心 Spring Cloud Config
  5. PXE批量部署安装Linux系统
  6. Hadoop_23_MapReduce倒排索引实现
  7. 单元测试框架之unittest(一)
  8. Mac&amp;Appium&amp;Python自动化测试-Appium安装
  9. centos7 nginx设置开启启动
  10. fsLayuiPlugin单页面操作