文档章节

module_param()

青春无极限
 青春无极限
发布于 2015/11/15 14:02
字数 644
阅读 213
收藏 1

  声明一变量      

       module_param(name, type, perm);

  name既是用户看到的参数名,又是模块内接受参数的变量;

  type表示参数的数据类型,是下列之一:byte, short, ushort, int, uint, long, ulong, charp, bool, invbool;

  perm指定了在sysfs中相应文件的访问权限。访问权限与linux文件爱你访问权限相同的方式管理,如0644,或使用stat.h中的宏如S_IRUGO表示。

  0表示完全关闭在sysfs中相对应的项。

  也可以使模块源文件内部的变量名与外部的参数名有不同的名字,通过module_param_named()定义。

       module_param_named(name, variable, type, perm);

   name是外部可见的参数名,

         variable是源文件内部的全局变量名,而module_param通过module_param_named实现,只不过namevariable相同。

   

  另一种方法是通过宏module_param_string()让内核把字符串直接复制到程序中的字符数组内。

  module_param_string(name, string, len, perm);

  这里,name是外部的参数名,

       string是内部的变量名,

       len是以string命名的buffer大小(可以小于buffer的大小,但是没有意义)

       perm表示sysfs的访问权限(或者perm是零,表示完全关闭相对应的sysfs)


   如果需要传递多个参数可以通过宏module_param_array()实现。外部参数内部调用;

  module_param_array(name, type, nump, perm);

  name既是外部模块的参数名又是程序内部的变量名,

       type是数据类型,

       permsysfs的访问权限。指针nump指向一个整数,其值表示有多少个参数存放在数组name中。值得注意是name数组必须静态分配。



 模块参数支持许多类型:

  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 被设置成提供的数的个数. 模块加载者拒绝比数组能放下的多的值.






   


© 著作权归作者所有

青春无极限
粉丝 2
博文 127
码字总数 70524
作品 0
卢湾
程序员
私信 提问
linux驱动(二):驱动模块传参

在编写应用我们可以通过终端向main函数传参,其实在驱动模块中我们同样可以传参,但需要遵从一定的格式要求。 在驱动的模块中声明一下你要传递的参数名称,类型和权限 module_param(变量的名...

u012142460
2017/12/24
0
0
linux kernel的cmdline参数解析原理分析

转载自Here Kernel 版本号:3.4.55 Kernel启动时会解析cmdline,然后根据这些参数如console root来进行配置运行。 Cmdline是由bootloader传给kernel,如uboot,将需要传给kernel的参数做成一...

fybon
2018/07/04
0
0
thinkphp 入口文件模块绑定/多模块开启

ThinkPHP 3.2 版本后将整个项目 APP_PATH 路径下的 Application 作为一个应用,应用下可以存在多个模块,如系统默认生成的 Common Home Admin 等 完整Url路由模版如下 index.php/module/con...

big_cat
2016/03/08
3.3K
0
AngularJS-源码阅读(七)

现在开始看的初始化。 angular.$$minErr = angular.$$minErr minErr; }); 总结一下,就是返回module创建函数,这个函数会创建module实例以及注入controller、directive、factory等。 为modul...

lost_o0
2014/04/01
457
1
nrf52832 SDK 相关问题

1. 时钟源要根据外围电路确定,如果有外部时钟源选1,否则2 #define NRFCLOCKLFSRCRC (0) /< LFCLK RC oscillator. */ #define NRF_CLOCK_LF_SRC_XTAL (1) /< LFCLK crystal oscillator. / #......

yueqian_scut
2017/01/06
0
0

没有更多内容

加载失败,请刷新页面

加载更多

zk中选举Leader时的网络IO QuorumCnxManager解析

每台服务启动过程中,会启动一个QuorumCnxManager,负责各台服务器之间底层Leader选举过程中的网络通信 当集群中有服务器服务中断时,zk会重新选举leader 内部类 Message定义消息结构 包含了...

writeademo
12分钟前
2
0
使用mdBook 替代 gitbook。

###** 为什么要替代gitbook** gitbook 有个模板问题:如果md文件中有连续的大括号(比如:&{{父亲 40}}),gitbook会把{{ 父亲 40 }}中的父亲 40当做一个模板变量。如果这个变量不存在,会报...

王坤charlie
14分钟前
2
0
TL-A7HSAD采集卡硬件的处理器、NOR FLASH、DDR3

TL-A7HSAD是一款由广州创龙基于Xilinx Artix-7系列FPGA自主研发的高速数据采集卡,可配套广州创龙TMS320C6655、TMS320C6657、TMS320C6678开发板使用。该采集卡包含1个双通道250MSPS*12Bit的高...

Tronlong创龙
27分钟前
2
0
项目启动报fastjson版本可能过低

进行项目启动的过程中,之前都正常,这次启动突然就失败了: 查看日志说的是版本过低,后来查看官方网站版本,替换了最新版本: 选择了最新版本的1.2.60,1.2.62尝试后都不行,后来查看网上搜...

aiChuang
27分钟前
2
0
McDonald’s is using Alexa and Google to accepting job applications

McDonald’s today announced a new initiative the fast food chain is calling the “Apply Thru,” in which owners of Amazon Alexa or Google Assistant devices can begin job applic......

wowloop
31分钟前
3
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部