一、驱动模块传参引入
在系统编程中绝大多数情况需要 main 函数作为程序的入口函数来进行参数的传递,如:
int main(int argc, char **argv) { .... }参数说明:
argc英文全称为argument count,代表形参表示传入参数的个数。
argv英文全称为argument value,代表参数传入的值。
同样,我们在写驱动函数的时候,也可以给驱动进行传参。
驱动传参的优势:
1.通过驱动传参,可以让驱动程序更加灵活。兼容性更强。
2.可以通过驱动传参,设置安全校验,防止驱动被盗用。
不足:
1.使驱动代码变得复杂化!
2.增加了驱动的资源占用。
驱动可以传递的参数类型
C语言中常用的数据类型内核大部分都支持驱动传参。这里将内核支持的驱动传递参数的类型分成三类:
基本类型:char,bool,int,long,short,byte,ushort,uint。
数组:array
字符串:string
二、怎么给驱动传递参数
驱动支持的参数类型有基本类型,数组,字符串。这三个类型分别对应函数:
module param:传递基本类型函数传递数组类型函数
module param array:传递字符串类型函数
module param string这三个函数
在Linux内核源码include/linux/moduleparam.h中有定义,如下: