LKM模块参数的传递

大耗子 2020年02月21日 257次浏览

模块参数的传递
module_param(book_num, int, S_IRUGO);
第一个参数是参数的name,自己定义
第二个参数是变量的类型,比如int,long,char,float等
第三个参数是权限,类似于文件的权限

S_IRUGO=(S_IRUSR|S_IRGRP|S_IROTH)
S_IRUSR:用户读 00400
S_IRGRP:用户组读 00040
S_IROTH: 其他读 00004

例如:

#include <linux/init.h>
#include <linux/module.h>
static char * book_name = "linux device test";
module_param(book_name, charp, S_IRUGO);
static int book_num = 4000;
module_param(book_num, int, S_IRUGO);
static int __init book_init(void)
{
    printk(KERN_INFO "book name is %s\n",book_name);
    printk(KERN_INFO "book num is %d\n",book_num);
    return 0;
}
module_init(book_init);
static void __exit book_exit(void)
{
    printk(KERN_INFO "hello module exit\n ");
}
module_exit(book_exit);
MODULE_AUTHOR("tanzhou EDU");
MODULE_LICENSE("GPL v2");
MODULE_DESCRIPTION("A simple book Module");
MODULE_ALIAS("a simplest module");

使用方式:

sudo insmod book.ko book_name="mouse" book_num=5000