文章目录
前言
`本文主要介绍linux kernel 中的内核模块参数,包括内核模块参数相关的宏定义,参数,以及使用方法等
一、什么是内核模块参数
前面的文章已经介绍了内核模块,内核模块参数就是内核模块使用的参数,像用户程序一样, 内核模块也可以接受命令行参数,这样就可以根据给定的参数动态的改变内核模块的行为。
二、内核模块参数函数 module_param()
内核模块参数是通过module_param() 来使用的
1. module_param() 宏定义
如下图所示是,内核模块参数 module_param() 在内核源码 include/linux/moduleparam.h 中的宏定义
2. module_param() 的参数介绍
由上图所知, module_param()主要有3个参数,分别是 name, type, perm
- name: 用作内核模块参数的变量名称
- type: 内核模块参数的变量类型(主要有,byte, hexint, short, ushort, int, uint, long, ulong, charp, bool, invbool, 其中charp 代表字符指针)
- perm:代表内核模块参数的变量操作权限(包括,S_IWUSR, S_IRUSR, S_IXUSR, S_IRGRP, S_IWGRP, S_IRUGO等,其中S_I 只是一个前缀, R代表读权限,W代表写权限,X代表可执行权限,USR代表用户,GRP代表组,UGO代表用户,组和其他)
perm 相关的操作权限定义,如下图所示
内核源码中 include/uapi/linux/stat.h 的定义
内核源码中 include/linux/stat.h 的定义
3. MODULE_PARM_DESC()
对内核模块参数的描述是通过MODULE_PARM_DESC()来进行的,如下图所示,是内核模块参数描述 MODULE_PARM_DESC() 在内核源码 include/linux/moduleparam.h 中的宏定义
三、内核模块参数使用实例
1.测试代码
测试代码如下
#include <linux/init.h>
#include <linux/module.h>
#include <linux/moduleparam.h>
#include