模块参数:
可以通过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