内核模块module传参
linux 2.6允许用户insmod的时候往内核模块里面传递参数,它主要使用module_param宏定义来实现这一功能。
参数应用
module_param(name, type, perm);
module_param(参数名,参数类型,参数读写权限)
举例:
static int howmany=;
module_param(howmany, int, );
在装载内核模块时,用户可以向模块传递参数,形式为:
insmod/modprobe 模块名 参数名=参数值
如果不传递,参数将使用模块内定义的缺省值。如果模块被内置,就无法insmod了,但bootloader可以通过在bootargs里设置
模块名.参数名=值
给该内置的模块传递参数。
参数类型
参数的类型可以是byte,short,ushort, int, uint, long, ulong, charp, bool或invbool(布尔的反)
除此之外,内核模块还支持参数数组:
module_param_array(数组名,数组类型,数组长,参数读写权限)
insmod时使用逗号分割数组元素。
参数目录
模块被加载后,在/sys/module/目录下将出现以此模块命名的目录。
当读写权限为0时,表示此参数不存在sysfs文件系统下对应的文件节点,如果此模块存在参数读写权限不为0的命令行参数,在此模块的目录下还将出现parameters目录,
其中包含一系列以参数名命名的文件节点,这些文件的权限值就是传入module_param()的参数的读写权限,而文件的内容为参数的值。
示例
// led.c
//********************************
#include <linux/module.h>
#include <linux/kernel.h>
#include <asm/io.h> MODULE_LISENCE("GPL");
MODULE_AUTHOR("limingth");
MODULE_DESCRIPTION("led module driver");
MODULE_VERSION("version1.0");
MODULE_ALIAS("myled test"); static int *vmem;
static int led_no = ;
module_param(led_no, int, ); static __init int led_init(void)
{
printk("led init ok!\n");
vmem = ioremap(0xe0200284, );
printk("vmem = %p\n");
*vmem &= ~(<<led_no);
return ;
} static __exit led_exit(void)
{
printk("led exit ok!\n");
*vmem = 0xf; return ;
} module_init(led_init);
module_exit(led_exit);
//*************************************
应用:
insmod led.ko led_no=
rmmod led
注:在操作系统下,所有的地址均为虚拟地址,所以物理地址需要通过ioremap或mmap函数将物理地址转换为虚拟地址后,再对地址操作。
内核模块module传参的更多相关文章
- angular使用post、get向后台传参的问题
一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http post进行异步传输的过程中后台是接收不到数据的. ...
- angularjs向后台传参,后台收不到数据
angularjs中封装了一个$http服务,用来请求远程资源 参见:HTTP API 其中封装过的$http.post和$http.get使用起来比较方便 后台是php,用$_POST['name' ...
- linux中模块的构建,传参,和printk函数的简单使用
静态编译,动态加载应用想访问内核需要通过系统调用 驱动:1.模块(打包,加入内核)2.内核机制3.操作硬件 在Kconfig里面配置menuconfig的时候,不同的类型会在图形化界面的终端显示不用的 ...
- ui-router多视图+嵌套视图+传参综合练习
ui-router多视图:页面上存在的多个ui-view,它们以名字区分: 嵌套视图:一个ui-view的一个状态下对应了一个html,这个html里面又有一个ui-view. 视图之间传参:用ui. ...
- webpack2使用ch4-向根目录index.html文件传参并使用参数 使用线上资源 压缩html
1 webpack.config.js const webpack = require('webpack'), htmlWebpackPlugin = require('html-webpack-pl ...
- pytest 12 函数传参和fixture传参数request
前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...
- Angular 自定义指令传参
<!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...
- pytest十一:函数传参和 firture 传参数 request
为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数.比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行.但是登录 ...
- 小程序-formdata传参
项目背景,后端接口要求formData传参: 在util.js文件中封装转化函数,代码如下: const formatTime = date => { const year = date.get ...
随机推荐
- JavaScript-自制日历控件(只选择年月)
<style> *{margin: 0px; padding: 0px;} </style> <input type="text" name=&quo ...
- 分享一款眼睛保健小软件 EyeDefender 多关注下眼睛的健康
http://www.nowamagic.net/librarys/veda/detail/2248 感觉最近视力又下降了不少,估计又要重新配眼镜了.总是对着电脑一坐就好几个小时,眼睛老是紧绷着,焦距 ...
- 【java设计模式】之 代理(Proxy)模式
代理模式的核心作用就是通过代理,控制对对象的访问.这跟实际中是一样的,比如说明星都有经纪人,这就是一个代理,比如有人要找某明星拍戏,那么首先处理这事的是他的经纪人,虽然拍戏需要自己拍,但是拍戏前后的一 ...
- Linux 批量建立信任关系,实现ssh无password登陆的脚本
作用: 把当前机器的ssh公钥拷贝到其它机器.以实现从当前机器能够ssh无password登陆到其它机器 用法: 1)把要加入的ip地址写入到一个文件里.比方host 2)把脚本保存为sh文件,如 i ...
- [转]Win7独立语言包下载
想找个语言包太不容易了 ,全是旧版的,最后不得以...在国外网站找到了下载地址,全部是最新的语言包!自己找对应语言的缩写吧 64-bit (x64) Windows 7 SP1: http://dow ...
- Linux 普通进程 后台进程 守护进程(转)
一.普通进程与后台进程 默认情况下,进程是在前台运行的,这时就把shell给占据了,我们无法进行其它操作.对于那些没有交互的进程,很多时候,我们希望将其在后台启动,可以在启动参数的时候加一个'& ...
- unity5 where is "Edit->Render Settings"?
The Render Settings logic has changed a bit. To find the settings you will need to go to "Windo ...
- 开源的报表系统easyreport的部署
https://github.com/xianrendzw/EasyReport/blob/master/docs/manual/version2_0.md
- hdu 1532 最大流
#include <cstdio> #include <iostream> #include <algorithm> #include <queue> ...
- ~function(){}() 和(function(){}){}
使用~function(){}()也是声明并调用函数的方法之一: 这是一段使用~function(){}()来声明函数并调用函数的例子: ~function() { alert(typeof next ...