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

模块参数使用示例

 
阅读更多

#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系列 ...

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

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

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

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

    c语言模块化编程示例

    #### 示例:使用头文件进行模块间通信 在上述LED流水灯项目中,我们可以通过以下方式使用头文件: - **timer.h**:声明定时器相关的配置函数和参数。 - **led.h**:定义LED控制函数的接口。 - **delay.h**:提供...

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

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

    模块参数与sysfs1

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

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

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

    易语言教学 - json模块解析/获取文本 示例源码

    这些示例会演示如何从网络获取JSON源码,然后使用易语言的JSON模块进行解析,展示如何读取和提取JSON数据。在学习过程中,你可以了解到如何正确地调用函数,传递参数,以及如何处理返回的结果。 通过这些示例源码,...

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

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

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

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

    kamailio模块使用说明

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

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

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

    宇波模块说明书 教程 指导

    因此,说明书往往会提供一些示例代码,或使用图形化界面工具,以降低学习难度,使得用户能够快速上手。 宇波模块在实际应用中可能面临各种环境挑战,如电磁干扰问题。为了提升通信质量,用户可能需要考虑优化天线...

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

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

Global site tag (gtag.js) - Google Analytics