驱动模块传参数

传单个参数

 

头文件在 include/linux/moduleparam.h

 

内核模块可以通过module_param来传单个参数

– module_param(name,type,perm)

– name:模块参数的名称

– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)

– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读)

 

传递多个参数

 

module_param_array(name, type, nump, perm)

– name:模块参数的名称

– type: 模块参数的数据类型(支持int long short uint ulong ushort类型)

– nump:保存参数个数的地址,是一个地址

– perm: 模块参数的访问权限(S_IRUSR参数表示所有文件所有者可读)

 

测试源码:

#include <linux/init.h>
/*包含初始化宏定义的头文件,代码中的module_init和module_exit在此文件中*/
#include <linux/module.h>
/*包含初始化加载模块的头文件,代码中的MODULE_LICENSE在此头文件中*/

/*定义module_param module_param_array的头文件*/
#include <linux/moduleparam.h>
/*定义module_param module_param_array中perm的头文件*/
#include <linux/stat.h>


MODULE_LICENSE("Dual BSD/GPL");
/*声明是开源的,没有内核版本限制*/

MODULE_AUTHOR("SKYFALL");
/*声明作者*/

static int module_arg1,module_arg2;
static int int_array[50];
static int int_num;

module_param(module_arg1,int,S_IRUSR);

module_param(module_arg2,int,S_IRUSR);

module_param_array(int_array,int,&int_num,S_IRUSR);


static int hello_init(void)
{
	int i;
	printk("%s,%d\n",__func__,__LINE__);
	
	printk(KERN_EMERG "module_arg1 is %d!\n",module_arg1);
	printk(KERN_EMERG "module_arg2 is %d!\n",module_arg2);
	
	for(i=0;i<int_num;i++){
		printk(KERN_EMERG "int_array[%d] is %d!\n",i,int_array[i]);
	}
		
	printk(KERN_EMERG "Hello World enter!\n");
	/*打印信息,KERN_EMERG表示紧急信息*/
	return 0;
}

static void hello_exit(void)
{
	
	printk("%s,%d\n",__func__,__LINE__);
	printk(KERN_EMERG "Hello world exit!\n");
}


module_init(hello_init);
/*初始化函数*/
module_exit(hello_exit);
/*卸载函数*/

编写Makefile,参考以前的博文即可。

加载测试:

insmod module_param.ko module_arg1=10 module_arg2=20 int_array=11,12,13,14,15,16,17,18

 

 

cat /sys/module/module_param/parameters/xxx 可以查询参数

 

 

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值