linux驱动模块的参数传递和模块导出
接着上一篇,这一篇我们讲讲linux驱动模块的参数传递和模块导出。先上代码
相比上一篇,这里我们多了两个参数value和name,我们可以在insmod内核的时候使用module_param这个宏来实现内核模块参数的传递,这点就类似于应用层我们写main函数一样,main函数也有两个参数argc和argv,只不过内核换了种方式传递参数而已,首先看module_param宏定义,module_param(name,type,perm),name:模块参数的名称,type:模块参数的数据类型,注意字符指针类型是charp,参数perm表示此参数在sysfs文件系统中所对应的文件节点的属性,其权限在include/linux/stat.h中有定义。它的值可以用宏定义也可以用数字表示(一般用0644)。
当我们不传参时,加载进内核打印如下值:
传参时,则如下:
好了,内核传参到此结束,下面说说内核模块的导出。
内核模块导出也是类似于应用层的函数间的调用,只不过内核的函数之间的调用需要用宏export_symbol来声明。先看代码
编写math.c
修改makefile
加载进内核,注意要先加载math.ko