linux驱动参数及参数的设置及修改

原创 2016年08月29日 16:32:22

在linux中,每一个module(驱动)加载到kernel后,都会在/sys/module目录下生成以该模块命名的一个文件夹,
在里面包含了该模块的一些信息。这里分析一下parameters下的参数。parameters目录下面有该module定
义的参数,用于与用户层交互数据。以boardcom的wifi驱动为例,加载驱动后,
在/sys/module/wlan_bcmdhd/parameters目录下有下面参数:

-rw-r--r-- root     root         4096 2015-01-06 09:00 clockoverride
-rw-r--r-- root     root         4096 2015-01-06 09:00 dhd_console_ms
-rw-r--r-- root     root         4096 2015-01-06 09:00 dhd_doflow
-rw-r--r-- root     root         4096 2015-01-06 09:00 dhd_dpcpoll
-rw-r--r-- root     root         4096 2015-01-06 09:00 dhd_msg_level
-rw-r--r-- root     root         4096 2015-01-06 09:00 dhd_oob_gpio_num
-rw-r--r-- root     root         4096 2015-01-06 09:00 disable_proptx
-rw-rw---- root     root         4096 2015-01-06 08:59 firmware_path
-r--r--r-- root     root         4096 2015-01-06 09:00 info_string
-rw-r--r-- root     root         4096 2015-01-06 09:00 instance_base
-rw-rw---- root     root         4096 2015-01-06 09:00 nvram_path
-rw-r--r-- root     root         4096 2015-01-06 09:00 op_mode
-rw------- root     root         4096 2015-01-06 09:00 passive_channel_skip

这里面的参数,有些是只读的,有些是可读写的,这些参数是怎么与驱动代码联系到一起的?
就是依赖驱动里面module_param定义。
如上面的dhd_msg_level、firmware_path的定义,在驱动代码中如下:
module_param(dhd_msg_level, int, 0644);
module_param_string(firmware_path, firmware_path, MOD_PARAM_PATHLEN, 0660);
同时我们还能在代码中见到module_param(iw_msg_level, int, 0);
最后一个参数为0的,
但在/sys/module/wlan_bcmdhd/parameters目录下却看不到iw_msg_level参数,
是因为module_param定义中最后一个参数为参数的操作权限,与linux的文件权限定义一样,
如果定义为0了,对用户层就是不可读写的,用户层也就不可见了。
对于可写的参数,驱动层修改参数后,用户层读到的数据也会跟着变了,
而用户层修改参数后,驱动层读到的参数也会跟着变。
也就是说驱动与用户层操作的是同一个变量。

版权声明:本文为博主原创文章,未经博主允许不得转载。

相关文章推荐

如何改变LINUX的文件属性与权限

我们知道文件权限对于一个系统的安全是非常重要的,那么我们如何修改一个文件的属性与权限呢?首先介绍几个常用的用户组、所有者、各种身份呢的权限的修改命令。如下所示: chgrp:改变文件所属用户组(ch...

linux驱动模块访问权限的控制

简述: 在驱动模块,可以对没有权限的进程和应用程序拒绝访问,有权限的才允许访问。权限控制接口:bool capable(int cap);定义头文件:#include 用法例子:if (! capa...
  • eZiMu
  • eZiMu
  • 2017-02-08 11:28
  • 448

设备节点创建以及驱动改权限

/**  **  MicroArray Corp.  **  Author     GUQ.  **  TIME       2015...

linux驱动程序调试常用方法

驱动程序开发的一个重大难点就是不易调试。本文目的就是介绍驱动开发中常用的几种直接和间接的调试手段,它们是: 利用printk 查看OOP消息 利用strace 利用内核内置的hacking选项 ...

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

模块参数很多情况下,我们期望通过参数来控制我们的驱动的行为,比如由于系统的不同,而为了保证我们驱动有较好的移植性,我们有时候期望通过传递参数来控制我们驱动的行为,这样不同的系统中,驱动可能有不同的行为...

15 linux驱动模块的参数

模块参数是用于在加载驱动模块时,指定模块里面的特定变量的具体值.实现方法: 1). #include 2). 在驱动源码里定义变量 static int num = 0; //当加...

Linux驱动中断函数参数详解

中断函数参数分析总结 Int request_irq (unsigned int irq, irq_handler_t handler, unsigned long flags, const char...
  • sum_TW
  • sum_TW
  • 2017-06-15 19:49
  • 2595

[转]移植linux-2.6.36内核后的ts及lcd驱动参数修改

本文转自:http://blogold.chinaunix.net/u4/120285/showart_2396199.html  移植linux-2.6.36内核及修改touchscreen及lc...

Linux LCD驱动中的LCD参数

kernel版本:linux-2.6.34 开发板:PW2440 CPU:S3C3440 LCD:3.5 寸TFT(320×240),Model Name LQ035NC111 LCD的参数设定是需要...

Linux设备驱动开发详解-第4章(二)-模块参数

1 module_param   在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()   参数用 module_param 宏定义来声明, ...
内容举报
返回顶部
收藏助手
不良信息举报
您举报文章:深度学习:神经网络中的前向传播和反向传播算法推导
举报原因:
原因补充:

(最多只允许输入30个字)