Linux模块参数

Linux内核允许在加载Linux模块的时候向模块传递参数,例如:


insmod module.ko param=2//向module模块的param参数值出入2


Linux内核模块的参数必须先声明

module_param(name,type,perm)

name: 参数的名字。

type: 参数的类型,可取(char、int、short、long、charp等类型,但没有float类型,应为内核不能很好的支持浮点型)。

perm参数的读写权限

perm字段是一个权限值,你应当使用<linux/stat.h>中定义的值。这个值控制谁可以存取模块参数在sysfs

中的表示如果perm设置成0,就根本没有sysfs选项。否则,它出现在/sys/module下面,带有给定的权限。

使用S_IRUGO作为参数可以被所有人读取,但不能修改;S_IRUGO|S_IWUSR允许root来修改参数,注意

如果一个参数被sysfs修改对应的模块看到的参数值也跟着改变了,但模块没有任何其他的通知。通常不

要允许模块参数可写,除非你准备好检测这个改变并作出相应的反应。引用自百度百科点击打开链接)。


下面是一个简单的带参数模块的例子:

#include<linux/init.h>  
#include<linux/module.h>  
  
static int a = 0;  
static char*p=NULL;  
module_param(a,int,S_IRUGO);  
module_param(p,charp,S_IRUGO);  
static int param_module_init(void)  
{  
      printk("a=%d   p=%s\r\n",a,p);  
      return 0;  
}  
  
static void param_module_exit(void)  
{  
      printk("module exit\r\n");  
}  
  
module_init(param_module_init);  
module_exit(param_module_exit);  
  
MODULE_LICENSE("GPL");

这个模块定义了两个参数 int型的a和charp型的p并在模块加载函数中把参数值输出,假设编译后的模块得到param.ko文件,则可以通过以下形式向模块的a和p参数传值

insmod param.ko a=2 p=abcd



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值