了解了内核模块、中断、定时器等内容后,我们缓一下来补充之前的一些内容和相关内容,接下来主要是了解内核态与用户态之间数据传递的机制,这次先了解内核模块参数,该部分在中断时有使用到,但未整理说明,现在补充学习下。
那么什么是内核态和用户态呢?简单来理解,内核模块和内核就是运行在内核态,而用户程序和命令行操作等则运行在用户态,即程序运行的空间状态不一样,那么两者如何通信?本次说到的内核模块参数会感受到。
作为内核模块参数,我们只有将驱动代码编译成ko文件,再使用insmod和modprobe命令加载时才会使用到(也可在加载模块后在/sys里修改),而一旦将其编译进内核,那么我们会使用到内核启动参数,这个后期再说明。
在include/linux/moduleparam.h文件里有关于内核模块参数的定义,而我们常用到的宏有如下:
#define module_param(name, type, perm) \
module_param_named(name, name, type, perm)
#define module_param_array(name, type, nump, perm) \
module_param_array_named(name, name, type,