module description module_param

module description module_param

module_param使用了 3 个参数: 变量名, 它的类型, 以及一个权限掩码用来做一个辅助的 sysfs 入口,这个宏定义应当放在任何函数之外, 典型地是出现在源文件的前面.

module_param

在用户态下编程可以通过main()的来传递命令行参数,而编写一个内核模块则通过module_param()

参数用 module_param 宏定义来声明, 它定义在 moduleparam.h.

module_param(name,type,perm);

module_param 使用了 3 个参数: 变量名, 它的类型, 以及一个权限掩码用来做一个辅助的 sysfs 入口(啥意思). 这个宏定义应当放在任何函数之外, 典型地是出现在源文件的前面.定义如:

static char *whom= "world";

static int howmany = 1;

module_param(howmany, int, S_IRUGO);

module_param(whom, charp, S_IRUGO);

模块参数支持许多类型:

bool

invbool

一个布尔型( true 或者 false)值(相关的变量应当是 int 类型). invbool 类型颠倒了值, 所以真值变成 false, 反之亦然.

charp

一个字符指针值. 内存为用户提供的字串分配, 指针因此设置.

int

long

short

uint

ulong

ushort

基本的变长整型值. 以 u 开头的是无符号值.

数组参数, 用逗号间隔的列表提供的值, 模块加载者也支持. 声明一个数组参数, 使用:

module_param_array(name,type,num,perm);

这里 name 是你的数组的名子(也是参数名),

type 是数组元素的类型,

num 是一个整型变量,

perm 是通常的权限值.

如果数组参数在加载时设置, num 被设置成提供的数的个数. 模块加载者拒绝比数组能放下的多的值.

perm参数的作用是什么?

最后的 module_param 字段是一个权限值; 你应当使用 <linux/stat.h> 中定义的值. 这个值控制谁可以存取这些模块参数在 sysfs 中的表示.如果 perm 被设为 0, 就根本没有 sysfs 项. 否则, 它出现在 /sys/module下面, 带有给定的权限. 使用 S_IRUGO 作为参数可以被所有人读取, 但是不能改变; S_IRUGO|S_IWUSR 允许 root 来改变参数. 注意, 如果一个参数被 sysfs 修改, 你的模块看到的参数值也改变了, 但是你的模块没有任何其他的通知. 你应当不要使模块参数可写, 除非你准备好检测这个改变并且因而作出反应.

测试模块,源程序hello.c内容如下:

#include <linux/init.h>

#include <linux/module.h>

#include <linux/moduleparam.h>

MODULE_LICENSE("Dual BSD/GPL");

static char *who= "world";

static int times = 1;

module_param(times,int,S_IRUSR);

module_param(who,charp,S_IRUSR);

static int hello_init(void)

{

int i;

for(i=0;i<times;i++)

printk(KERN_ALERT "(%d) hello, %s!n",i,who);

return 0;

}

static void hello_exit(void)

{

printk(KERN_ALERT"Goodbye, %s!n",who);

}

module_init(hello_init);

module_exit(hello_exit);

编译生成可执行文件hello

插入:

#insmodhello who="world" times=5

出现5次"hello,world!":

#(1)hello,world!

#(2)hello,world!

#(3)hello,world!

#(4)hello,world!

#(5)hello,world!

卸载:

#rmmodhello

出现:

#Goodbye,world!

  

爱华网本文地址 » http://www.413yy.cn/a/8103220103/15544.html

更多阅读

工商银行理财金卡终于让我恼羞成怒 工商银行理财金卡降级

工商银行理财金卡终于让我恼羞成怒博客这么自由自在的地方,我尚未撒成野,想不到今天早上在工商银行某营业厅,我却恼羞成怒,撕下了伪装已久的斯文面具,工商银行真神行也!当初办这张理财金卡,是工行营业厅的经理拉着我办的,跟我说了一大堆办此

地球天使特许加盟 创业必懂法之特许加盟法法案

 国务院最近通过了最新的《特许经营管理条例》,本条例将于今年五月一日正式实施,全文如下   第一章 总 则  第一条 为规范商业特许经营活动,促进商业特许经营健康、有序发展,维护市场秩序,制定本条例。  第二条 在中华人民共和

母亲70大寿祝寿词 母亲八十大寿生日祝词

母亲八十大寿生日祝词各位亲友、各位来宾:今天是母亲八十大寿,我们兄弟姊妹七人和大家相聚在此,共同祝贺母亲80大寿。养育之恩如滔滔江河不绝,寸草之心难报三春艳阳光辉!值此母亲80诞辰这个美好时刻,我谨代表全家敬祝母亲健康如意,福乐绵长

进入第三个月宝宝特点 6个月的宝宝有什么特点

生疏感萌生了6月龄婴儿对外界事物越发感兴趣了,看到爸爸妈妈,会高兴地笑,手舞足蹈的。看到陌生的人,尤其是陌生的男人,会害怕地把头藏到妈妈的怀里,甚至哭闹。生疏的人不再容易把宝宝从妈妈怀中抱走了。但如果用吃的、玩具、到户外玩等方

中秋节给老师的祝福语 给男朋友的中秋节祝福语

&#160;给男朋友的中秋节祝福语:  1、青蛙的四大愿望:庄稼地里没蛇泡,天鹅在我怀里抱,参加奥运三级跳,中秋节里看短信。  2、用我的真心做陷,用我的祝福做面,裹住美满与甜蜜,在这美丽的中秋佳节,送上我为您特制的月饼,愿您品出我的真情意

声明:《module description module_param》为网友三好骚年分享!如侵犯到您的合法权益请联系我们删除