使用module_param来向内核模块传递参数
来源:互联网 发布:水印制作软件下载 编辑:程序博客网 时间:2024/04/29 13:44
http://blog.csdn.net/sttypxx520/article/details/2579679
如果希望给一个内核模块传递参数,则可以通过module_param()。
参数用moudle_param宏定义来声明,它定义在moduleparam.h。
下面是module_param宏的定义:
/* This is the fundamental function for registering boot/module
parameters. perm sets the visibility in sysfs: 000 means it's
not there, read bits mean it's readable, write bits mean it's
writable. */
#define __module_param_call(prefix, name, set, get, arg, perm) /
/* Default value instead of permissions? */ /
static int __param_perm_check_##name __attribute__((unused)) = /
BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)); /
static char __param_str_##name[] = prefix #name; /
static struct kernel_param const __param_##name /
__attribute_used__ /
__attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) /
= { __param_str_##name, perm, set, get, arg }
#define module_param_call(name, set, get, arg, perm) /
__module_param_call(MODULE_PARAM_PREFIX, name, set, get, arg, perm)
/* Helper functions: type is byte, short, ushort, int, uint, long, ulong, charp, bool or invbool, or XXX if you define param_get_XXX, param_set_XXX and param_check_XXX. */
#define module_param_named(name, value, type, perm) /
param_check_##type(name, &(value)); /
module_param_call(name, param_set_##type, param_get_##type, &value, perm); /
__MODULE_PARM_TYPE(name, #type)
#define module_param(name, type, perm) /
module_param_named(name, name, type, perm)
module_param使用了3个参数: 变量名,它的类型,以及一个权限掩码。这个宏定义应当放在任何函数之外,典型的是出现在源文件的前面,定义如:
static int swap_xy = 0;
static int rotate = 0;
module_param(swap_xy, int, S_IRUGO);
module_param(rotate, int, S_IRUGO);
模块参数支持许多类型:
bool
invbool 一个布尔型(true或者false)值。
charp 一个字符指针值。内存为用户提供的字串分配,指针因此设置。
int
long
short
uint
ulong
ushort 基本的变长整型值。以 u 开头的是无符号值。
最后的 module_param 字段是一个权限值,应当使用<linux/stat.h>中定义的值。这个值控制谁可以存取这些模块参数在sysfs中的表示。如果perm 被设为0,就没有sysfs项。否则,出现在/sys/module下面,并带有给定的权限。使用S_IRUGO作为参数可以被所有人读取,但是不能改变。S_IRUGO|S_IWUSR允许root来改变参数。注意,如果一个参数被sysfs修改,你的模块看到的参数值也改变了,但是你的模块没有任何 其他的通知。因此你应当不要使模块参数可写。
- 使用module_param来向内核模块传递参数
- 使用module_param来向内核模块传递参数
- 使用module_param来向内核模块传递参数
- module_param内核模块参数传递
- 内核模块 module_param()传递参数
- [转]向linux模块驱动传递参数 module_param
- linux驱动: 如何向模块传递参数, module_param和module_param_array
- 内核模块编程---使用内核模块参数(module_param()) (2)
- Linux内核学习-内核模块参数module_param
- 内核状态下参数传递-module_param
- 用户向内核模块传递参数例子
- Linux 内核模块参数学习module_param
- uboot 参数对应着内核模块的参数 module_param
- uboot 参数对应着内核模块的参数 module_param
- module_param模块函数的作用--用来传递参数
- 内核子系统或设备驱动可以直接编译到内核,也可以编译成模块,如果编译到内核,可以使用前一节介绍的方法通过内核启动参数来向它们传递参数,如果编译成模块,则可以通过命令行在插入模块时传递参数,或者在运行时,
- 模块参数module_param
- module_param 模块参数
- TeX系列: 图文混排宏包picins
- JAVA对象序列化机制
- 谈谈php的会话管理
- C++与C# 数据类型对照表
- 分析的一段TS流
- 使用module_param来向内核模块传递参数
- asp.net 计划任务管理程序实现,多线程
- poi读写word模板
- Linux 信号列表
- python yield 另外一种用法
- LIVE555建立RTSP服务记录
- 解决GridView绑定时无法将类型为 <>f__AnonymousType0`2[xx] 的对象强制转换为类型“xxx”的方法
- 编译php 5.3.8出错:make: *** [sapi/fpm/php-fpm] Error 1
- rvm ruby 多版本控制