`
Michaelmatrix
  • 浏览: 215279 次
  • 来自: 北京
文章分类
社区版块
存档分类
最新评论

模块参数使用示例

 
阅读更多

#include <linux/module.h>
#include <linux/moduleparam.h> /* Optional, to include module_param() macros */
#include <linux/kernel.h> /* Optional, to include prink() prototype */
#include <linux/init.h> /* Optional, to include module_init() macros */
#include <linux/stat.h> /* Optional, to include S_IRUSR ... */

static int myint = -99;
static char *mystring = "i'm hungry";

static int myintary[]= {1,2,3,4};
static char *mystrary[] = {"apple", "orange", "banana"};
static int nstrs = 3;

module_param(myint, int, S_IRUSR|S_IWUSR);
MODULE_PARM_DESC(myint, "A trial integer");

module_param(mystring, charp, 0);
module_param_array(myintary, int, NULL, 0444);
module_param_array(mystrary, charp, &nstrs, 0664);

static int __init hello_init(void)
{
int i;

printk(KERN_INFO "myint is %d/n", myint);
printk(KERN_INFO "mystring is %s/n", mystring);

printk(KERN_INFO "myintary are");
for(i = 0; i < sizeof(myintary)/sizeof(int); i++)
printk(" %d", myintary[i]);
printk("/n");

printk(KERN_INFO "mystrary are");
for(i=0; i < nstrs; i++)
printk(" %s", mystrary[i]);
printk("/n");

return 0;
}

static void __exit hello_exit(void)
{
}

module_init(hello_init);
module_exit(hello_exit);

运行:
insmod ./hello.ko myint=100 mystring="abc" myintary=-1,-2 mystrary="a","b"

dmesg输出:
myint is 100
mystring is abc
myintary are -1 -2 3 4
mystrary are a b

说明:
module_param() 和 module_param_array() 的作用就是让那些全局变量对 insmod 可见,使模块装载时可重新赋值。
module_param_array() 宏的第三个参数用来记录用户 insmod 时提供的给这个数组的元素个数,NULL 表示不关心用户提供的个数
module_param() 和 module_param_array() 最后一个参数权限值不能包含让普通用户也有写权限,否则编译报错。这点可参考 linux/moduleparam.h 中 __module_param_call() 宏的定义。
字符串数组中的字符串似乎不能包含逗号,否则一个字符串会被解析成两个

分享到:
评论

相关推荐

    Simulink模块参数在线修改方法的研究

    ### Simulink模块参数在线修改方法的研究 #### 引言 Simulink是MATLAB提供的一款强大的图形化界面动态系统仿真工具,在学术界和工业领域得到了广泛应用。它为用户提供了一个直观简便的方式来构建复杂的动态系统...

    BK10 Simulink如何在线修改(动态修改)模块参数.rar

    - 压缩包中的"Dynamic Change Parameter"可能是示例模型或者脚本,用以演示如何动态修改Simulink模块参数。打开这个文件,研究其结构和代码,可以帮助你更好地理解和应用上述步骤。 通过以上步骤,你可以实现...

    Node中的Http模块和Url模块的使用示例代码.zip

    下面将详细介绍这两个模块以及相关的使用示例。 一、Http模块 1. Http模块概述 Node.js的Http模块允许我们创建HTTP服务器,处理客户端的HTTP请求,并发送响应。它提供了两种主要的类:http.Server 和 ...

    07-模块使用说明_CanTp模块软件使用说明文档.pdf

    文档还提及了CanTp模块的源代码示例、文件使用说明、资源占用情况以及接口函数的使用方法。接口函数包括与下层CAN驱动的接口调用示例和与上层模块的接口调用示例。 在实际使用过程中,读者需要关注软件的局限性,...

    第一个Nginx模块的例子

    - **配置项**:定义在Nginx配置文件中的模块特定参数。 - **上下文**:配置项可以存在于多个上下文中,如http、server、location等。 - **指令处理函数**:读取配置文件中的指令并执行相应操作。 - **请求对象**...

    SIMATIC S7-300 CP341点到点通讯_安装和参数分配说明_模块使用手册.rar

    参数分配是使用CP341的关键步骤,它涉及到定义通信参数,如波特率、奇偶校验、数据位数以及停止位等。这些参数需要根据与CP341通信的设备或系统的规格进行设置。在S7-300的编程软件,如TIA Portal或Step 7中,可以...

    三菱QD75 PLC 视频教程 QD75定位模块教接线参数程序编程视频教学+QD75中文手册+程序案例.zip

    三菱PLC QD75视频教程 定位模块教接线参数程序教学 带QD75中文手册 QD75 模块接线,参数设置,程序编写 一整套教程 第1集 QD75模块介绍讲解 第2集QD75模块接线讲解 第3集QD75参数详细设置讲解 第4集 QD75 P系列 ...

    PROFIBUS模块CJ1W-PRM21使用例子.pdf

    本案例中,我们将具体介绍如何使用这两个模块进行通信,并详细描述了硬件连接、软件配置以及一些使用中的注意事项。 首先,硬件搭建是实现PROFIBUS通信的第一步。案例中使用了CJ2M-CPU13作为CPU模块,CJ1W-PRM21...

    工程上常用保存参数的例子NI_NI参数保存示例_

    标题中的“工程上常用保存参数的例子NI_NI参数保存示例”表明这是一个关于在工程实践中如何使用NI(National Instruments)软件来保存和管理参数的示例。描述中的“NI参数保存示例工程上常用保存参数的例子NI”...

    易语言控制面板模块使用例子源码,易语言控制面板模块和例子

    在学习和使用易语言控制面板模块时,建议参考模块附带的示例源码。通过分析和运行这些示例,你可以更好地理解每个过程的作用和使用方法,以及如何根据自己的需求进行调整。同时,熟悉Windows API的相关知识也会对...

    模块参数与sysfs1

    模块参数与sysfs是Linux内核中两个重要的概念,它们共同为用户空间提供了一种与内核交互的机制。sysfs是一个虚拟文件系统,它将内核的数据结构和属性暴露给用户空间,使得用户可以查看和修改内核的状态。而模块参数...

    三菱PLC QD75视频教程 定位模块教接线参数程序教学视频.zip

    三菱PLC QD75视频教程 定位模块教接线参数程序教学 带QD75中文手册 QD75 模块接线,参数设置,程序编写 一整套教程 第1集 QD75模块介绍讲解 第2集QD75模块接线讲解 第3集QD75参数详细设置讲解 第4集 QD75 P系列 ...

    QTP自带Flight示例程序登录模块完整自动化测试

    本文将详细介绍使用QTP自动化测试工具测试其自带Flight示例程序的登录模块的自动化测试,包括用户名、密码参数化、按钮的检查等知识点。 一、QTP自动化测试工具简介 QTP(QuickTest Professional)是一款功能强大...

    MFRC522模块项目代码示例(采用模拟SPI时序).zip

    这个项目示例代码提供了一个完整的MFRC522与STM32通信的例子,有助于开发者理解和实现类似的应用。通过深入学习和理解这段代码,可以更好地掌握MFRC522模块的功能和SPI通信方式,为开发非接触式IC卡读写系统提供基础...

    kamailio模块使用说明

    加载模块后,需要通过配置指令来设定模块参数。例如,`mod_auth`模块的配置可能包括定义认证数据库、用户密码哈希算法等。下面是一个简单的配置示例: ```cfg auth_host db.example.com auth_dbname kamailio auth_...

    安卓QQ协议易语言模块 包含安卓模块和示例源码

    通过阅读和运行示例代码,开发者可以直观地了解如何使用这些模块,以及如何将它们整合到自己的项目中。示例程序通常包含了模块的基本用法,包括初始化、登录、发送消息等核心步骤,为初学者提供了清晰的学习路径。 ...

    Linux将多个C源文件编译进一个KO模块驱动示例

    3. **模块参数**:使用`module_param()`宏定义模块参数,允许用户在加载模块时传递参数。 4. **函数定义**:实际的驱动代码通常包含多个函数,每个函数实现特定的功能。 5. **模块声明**:使用`module_init()`和`...

    超级网页访问模块+测试例子

    2. **测试例子**:这个部分通常包含易语言源代码文件,演示了如何使用上述模块进行实际的网页访问操作。例子可能包括了简单的GET请求获取网页内容,或者更复杂的POST请求提交表单数据等。通过阅读和运行这些示例,...

Global site tag (gtag.js) - Google Analytics