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传参的更多相关文章

  1. angular使用post、get向后台传参的问题

    一.问题的来源 我们都知道向后台传参可以使用get.put,其形式就类似于name=jyy&id=001.但是在ng中我却发现使用$http post进行异步传输的过程中后台是接收不到数据的. ...

  2. angularjs向后台传参,后台收不到数据

    angularjs中封装了一个$http服务,用来请求远程资源 参见:HTTP API 其中封装过的$http.post和$http.get使用起来比较方便 后台是php,用$_POST['name' ...

  3. linux中模块的构建,传参,和printk函数的简单使用

    静态编译,动态加载应用想访问内核需要通过系统调用 驱动:1.模块(打包,加入内核)2.内核机制3.操作硬件 在Kconfig里面配置menuconfig的时候,不同的类型会在图形化界面的终端显示不用的 ...

  4. ui-router多视图+嵌套视图+传参综合练习

    ui-router多视图:页面上存在的多个ui-view,它们以名字区分: 嵌套视图:一个ui-view的一个状态下对应了一个html,这个html里面又有一个ui-view. 视图之间传参:用ui. ...

  5. webpack2使用ch4-向根目录index.html文件传参并使用参数 使用线上资源 压缩html

    1 webpack.config.js const webpack = require('webpack'), htmlWebpackPlugin = require('html-webpack-pl ...

  6. pytest 12 函数传参和fixture传参数request

    前沿: 有的case,需要依赖于某些特定的case才可以执行,比如,登陆获取到的cookie,每次都需要带着他,为了确保是同一个用户,必须带着和登陆获取到的同一个cookies. 大部分的用例都会先登 ...

  7. Angular 自定义指令传参

    <!DOCTYPE html><html ng-app="myApp"><head lang="en"> <meta ...

  8. pytest十一:函数传参和 firture 传参数 request

    为了提高代码的复用性,我们在写用例的时候,会用到函数,然后不同的用例去调用这个函数.比如登录操作,大部分的用例都会先登录,那就需要把登录单独抽出来写个函数,其它用例全部的调用这个登录函数就行.但是登录 ...

  9. 小程序-formdata传参

    项目背景,后端接口要求formData传参: 在util.js文件中封装转化函数,代码如下: const formatTime = date => { const year = date.get ...

随机推荐

  1. HDUOJ----Good Numbers

    Good Numbers Time Limit: 2000/1000 MS (Java/Others)    Memory Limit: 32768/32768 K (Java/Others) Tot ...

  2. Eclipse,以及tomcat使用时可能会遇到的几个问题

    http://blog.sina.com.cn/s/blog_56b0cb2d01000a7r.html Eclipse,以及tomcat有几个问题.说明如下 1, 工程不编译的问题 . 有时候,项目 ...

  3. Java程序作linux服务并且开机自动启动[转]

    以有个java应用名称为test,打包为test.jar,程序入口为cn.com.ppnote.SocketServer. 下面在linux的/opt下建立testapp目录,复制test.jar到/ ...

  4. Java实现文件自动打包成zip并下载的代码

      import java.io.File; import java.io.FileInputStream; import java.io.FileOutputStream; import java. ...

  5. tcp流协议产生的粘包问题和解决方案

    我们在前面曾经说过,发送端可以是一K一K地发送数据,而接收端的应用程序可以两K两K地提走数据,当然也有可能一次提走3K或6K数据,或者一次只提走几个字节的数据,也就是说,应用程序所看到的数据是一个整体 ...

  6. linux系统调用sysconf

    1.前言 当前计算机都是多核的,linux2.6提供了进程绑定cpu功能,将进程指定到某个core上执行,方便管理进程.linux提供了sysconf系统调用可以获取系统的cpu个数和可用的cpu个数 ...

  7. shell学习四十八天----文件校验和匹配

    文件校验和匹配 要是你怀疑可能有非常多文件具有同样的内文,而是用cmp或diff进行比較全部横队的比較,导致所花费的时间会随着文件数目增长成次方的增长. 这是能够使用file checksum(文件校 ...

  8. 深度学习图像标注工具VGG Image Annotator (VIA)使用教程

    VGG Image Annotator (VIA)是一款开源的图像标注工具,由Visual Geometry Group开发. 可以在线和离线使用,可标注矩形.圆.椭圆.多边形.点和线.标注完成后,可 ...

  9. 使用cat命令添加或附加多行文本

    覆盖原有文本: cat>test<<EOF the 1 line the 2 line the 3 line EOF 追加的原有文本尾部: cat>>test<&l ...

  10. 批处理学习笔记11 - del命令和rd命令

    这两个命令都是删除,所以放一块说了 del 删除文件 rd 删除目录(文件夹) ------------------------------------------------------------ ...