第八节、驱动模块传参数
本节用于介绍驱动模块传参数
1、什么是驱动传参驱动传参就是传递参数给我们的驱动。
举例:
insmod beep.ko a=1
2、驱动传参数有什么作用呢?
- 设置驱动的相关参数,比如设置缓冲区的大小
- 设置安全校验,防止我们写的驱动被入盗用
3、怎么给驱动传参数?
传递普通的参数
比如char,int类型的
文件位置路径:include/linux/moduleparam.h
#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
//参数
//name:要传递进去的参数的名称
//type:类型
//perm:参数读写的权限,在include/uapi/linux/stat.h文件中有定义
加载模块测试
root@localhost:~# insmod parameter.ko a=3
[ 288.568359] a = 3
加载完模块之后可以在sys/module下面生成对应模块名称的目录,在该目录下面的parameters目录内可以看到我们给驱动传递的参数
可以查看权限以及值
root@localhost:~# ls -l /sys/module/parameter/parameters/
total 0
-r-------- 1 root root 4096 Jan 29 00:06 a
root@localhost:~# cat /sys/module/parameter/parameters/a
3
传递数组
文件位置路径:include/linux/moduleparam.h
#define module_param_array(name, type, nump, perm) \
module_param_array_named(name, name, type, nump, perm)
//参数
//name:要传递进去的参数的名称
//type:类型
//nump:实际传入进去的参数的个数
//perm:参数读写的权限,在include/uapi/linux/stat.h文件中有定义
加载模块测试
root@localhost:~# insmod parameter.ko b=1,2,3,4,5
[ 1454.314523] b[0] = 1
[ 1454.314528] b[1] = 2
[ 1454.314532] b[2] = 3
[ 1454.314535] b[3] = 4
[ 1454.314538] b[4] = 5
[ 1454.314541] count = 5
3、如果我们多传递进去参数,会发什么什么?
会报错