安装带参数的ko

在加载驱动的模块的时候通过 module_param()接收外部参数;

module_param()为一个宏,表示向当前模块传递参数
该宏定义在<linux/moduleparam.h>
使用说明:
	原型:
		moudle_param(name,type,perm);
	功能:定制模块参数,用于在加载模块时给相关变量传递参数
	参数说明:
		name:将要传递参数的变量名称;
		type:传递参数的数据类型
		perm:传递参数的访问权限
		
	其中type可以使用以下任意一种类型:
	bool:布尔型
	inbool:布尔反值
	charp:字符指针
	short:短整型
	int:整型
	ushort:无符号短整型
	int:整型
	long:长整型
	ulong:无符号长整型
	
	perm:表示此参数在sysf文件系统中所对应的文件节点属性,其权限在include/linux/stat.h中有定义
它的取值可以用宏定义,也可以用数字法表示
	#define S_IRUSR 00400文件所有者可读
	#define S_IWUSR00200文件所有者可写
	#define S_IXUSR 00100文件所有者可执行
	#define S_IRGRP00040与文件所有者同组的用户可读
	#define S_IWGRP00020
	#define S_IXGRP 00010
	#define S_IROTH 00004与文件所有者不同组的用户可读
	#define S_IWOTH 00002
	#define S_IXOTH 00001
	
数字法:1表示执行权限,2表示写入权限,4表示读取权限。
使用举例:
	int irq;
	char* pstr;
	module_param(irq,int 0664);
	module_param(pstr,charp,0000);
	
安装ko的时候
inmod xxx.ko irq=10 pstr="hello leo"

下面以代码形式传递数组参数到驱动模块

内核模块参数数组简介
module_param_array( name, type, nump, perm);
参数:
name:模块参数的名称
type: 模块参数的数据类型
nump: 数组元素个数指针
perm: 模块参数的访问权限
例如:
staticintfish[10];
static int nr_fish;
module_param_array( fish, int, &nr_fish, 0664);
nr_fish:保存最终传递 数组元素个数,不能大于10#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


插入:
# insmod hello who="world" times=5
出现5"hello,world!":
#(1)hello,world!
#(2)hello,world!
#(3)hello,world!
#(4)hello,world!
#(5)hello,world!

卸载:
# rmmod hello
出现:
#Goodbye,world!
  • 3
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值