10. linux 驱动模块参数
1. 相关接口
module_param(参数名,参数类型,参数读/写权限)
module_param_array(数组名,数组类型,数组长,参数读/写权限)
说明:
- 参数和参数类型,需保持一致
- 参数类型有: byte、short、ushort、int、uint、long、ulong、charp(字符指针)、bool 或 invbool(布尔的反)
- 数组长一般设置为
NULL
- 模块加载后可以在
/sys/module/模块名/parameters
目录下查看参数
2. 代码样例
hello.c
#include <linux/init.h>
#include <linux/kernel.h>
#include <linux/module.h>
static int value = 30;
static int value_arr[3] = {1, 2, 3};
static int __init hello_init(void)
{
printk("init hello module\n");
return 0;
}
static void __exit hello_exit(void)
{
printk("exit hello module\n");
}
module_init(hello_init);
module_exit(hello_exit);
module_param(value, int, 0644);
module_param_array(value_arr, int, NULL, 0644);
MODULE_LICENSE("GPL");
Makefile
KERNEL_DIR=/usr/src/linux-headers-3.13.0-24-generic
all:
make -C $(KERNEL_DIR) M=`pwd` modules
clean:
make -C $(KERNEL_DIR) M=`pwd` clean
obj-m += hello.o
3. 编译运行
$ make
$ sudo inmod hello.ko
$ lsmod | grep hello
hello 12703 0
$ cd /sys/module/hello/parameters
$ ls
value value_arr
$ cat value
30
$ cat value_arr
1,2,3
目的:我们将驱动参数传递出来方便查询驱动的运行情况