• Linux设备驱动程序 之 模块参数


    模块支持参数的方法

    内核允许驱动程序指定参数,这些参数可在运行insmod或者modprobe命令装载模块时赋值,modprobe还可以从它的配置文件(/etc/modporb.conf)中读取参数值;

    insmod加载模块时指定参数的方式如下:

    1 insmod hellop howmany=10 whom="Mom"

    在模块文件中,需要定义参数:

    1 static char *whom = "world";
    2 static int howmany = 1;
    3 module_param(howmany, int, S_IRUGO);
    4 module_param(whom, charp, S_IRUGO);
    内核支持的模块参数类型如下

    bool && invbool 布尔值,invbool类型对值进行反转,true变为false,false变为true;

    int long short uint ulong ushort 具有不同长度的基本类型值;u开头表示无符号值;

    1 module_param_array(name,type,perm);

    name-参数名称;

    type-元素的类型;

    perm-访问许可;

    模块装载器也支持数组参数,提供数组值时用逗号划分各个数组成员,需要使用的宏如下:

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

  • 相关阅读:
    委托
    Ajax TreeView绑定数据库(一)
    递归算法算出1,1,2,3,5.........(二)
    Ajax技术之深入浅出
    javasript读写xml
    递归算法求阶乘(一)
    关于.Net中的实际开发
    ASP.NET Form表单验证
    js 实现自动合并相同的行
    递归快速排序
  • 原文地址:https://www.cnblogs.com/wanpengcoder/p/11759594.html
Copyright © 2020-2023  润新知