linux内核模块开发笔记


模块参数:

可以通过module_param指定模块参数,可以连续多次使用多定义几个模块参数

module_param(name,type,perm)

其中 name是模块参数的名称,type是这个参数的类型,perm是模块参数的访问权限

type常见值:

bool:布尔型 int:整型 charp:字符串型

perm常见值:

S_IRUGO:任何用户都对/sys/module中出现的该参数具有读权限

S_IWUSR:允许root用户修改/sys/module中出现的参数

例子:

#include<linux/init.h>
#include<linux/module.h>

MODULE_LICENSE("GPL");

static char *name="wang";
static int age=30;

module_param(age,int,S_IRUGO);
moduel_param(name,charp,S_IRUGO);

static int hello_init(void)
{
	printk(KERN_EMERG"Name:%s\n",name);
	printk(KERN_EMERG"Age:%d\n",age);
	return 0;
}

static void hello_exit(void)
{
	printk(KERN_INFO"Module Exit\n");
}
module_init(hello_init);
module_exit(hello_exit);


加载:

insmod module.ko age=12



调用另一个内核模块的函数

有A和B两个模块,A要调用B模块的函数,首先和平常一样定义其为外部函数extern   函数名();   重要的是B中要将该函数通过EXPORT_SYMBLO(函数名);导出


内核打印优先级一共有8种

<0>到<7> 越低级别越高

在/proc/sys/kernel/printk  中记录了想要的级别

分别对应:

.Console_loglevel

.Default_message_loglevel

.Minimum_console_level

.Default_console_logleve



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值