驱动传参就是传递参数给我们的驱动,例如
- insmod beep.ko a=1
- insmod beep.ko b=1,2,3,4,5
作用
- 设置驱动的相关参数,比如设置缓冲区的大小
- 设置安全校验,防止我们写的驱动被人盗用
步骤
- 传递普通的参数,比如 char,int 类型的
- 需要用到一个函数,module_param(name,type,perm);
- name:要传递进去的参数名字
- type:参数类型
- perm:参数读写的权限
- 使用步骤
- 在驱动中定义一个变量,static int a;
- 用 module_param 函数,module_param(a,int ,S_IRUSR);
- 在后面用的时候就可以直接使用了
- 验证
- 当加载驱动后,并传如参数后,进入 cd /sys/ 驱动名字/目录,输入 ls 命令,就可以看到你传入的参数了
- 然后输入 ls -l 就可以看到权限了
- 也可以输入cat a 查看 a 的值
- 需要用到一个函数,module_param(name,type,perm);
- 传递数组
- 需要用到一个函数,module_param_array(name,type,nump,perm);
- name:要传递进去的参数名字
- type:参数类型
- nump:实际传入进去的参数的个数
- perm:参数读写的权限
- 使用步骤
- 在驱动中定义一个变量数组,static int b[5];
- 定义一个传入参数数量,static int count;
- 用 module_param 函数,module_param(b,int ,&count,S_IRUSR);
- 在后面用的时候,count就表示传入了多少个参数,就可以读取b中传入的数据了
- 验证
- 当加载驱动后,并传如参数后,insmod 驱动名称.ko b=1,2,3,4,5
- 进入 cd /sys/module/驱动名字/ 的目录,输入 ls 命令,就可以看到你传入的参数了
- 然后输入 ls -l 就可以看到权限了
- 也可以输入cat b 查看 b 的值
- 注意
- 如果传递数组时,传入的数据大于定义的数量,就报错,会告诉你最多能传入多少个
- 需要用到一个函数,module_param_array(name,type,nump,perm);