[Linux内核驱动]模块参数

模块参数

更多内容可以查看我的github

可以用过 module_param(参数名,参数类型,参数读/写权限) 为模块定义一个参数。

在装载内核模块是,用户可以通过 insmod 模块名 参数名=参数值 的形式向模块传递参数,如果不传递,参数将使用模块内定义的缺省值。

对于被内置的模块,无法insmod,但是bootloader可以通过在bootargs里设置模块名.参数名=值的形式传递参数。

参数类型有:

  • byte
  • short
  • ushort
  • int
  • uint
  • long
  • ulong
  • bool
  • invbool 布尔的反
  • charp 字符指针

除此之外,模块也可以拥有参数数组,形式为module_parma_array(数组名,数组类型,数组长,参数读/写权限)

模块被加载后,在/sys/module/目录下将出现以此模块名为名的目录。当模块参数权限为0时,表示此参数不存在对应的文件节点,此时无法通过文件节点来修改参数的值。对于权限不为0的参数,目录下将出现parameters目录,里面包含以参数名为名的文件,文件中保存了参数的值。

代码

c 复制代码
/*
 * @Date: 2024-04-29 12:28:42
 * @author: lidonghang-02 2426971102@qq.com
 * @LastEditTime: 2024-05-19 19:51:54
 */
#include <linux/init.h>
#include <linux/module.h>

static int param_value = 0;
static char* param_name = "default";

// 在模块加载时,可以通过"insmod 模块名 参数名=参数值"来设置参数
module_param(param_value, int, S_IRUGO);
module_param(param_name, charp, S_IRUGO);

static int __init param_init_module(void)
{
  printk(KERN_INFO "param module init\n");
  printk(KERN_INFO "param_value = %d\n", param_value);
  printk(KERN_INFO "param_name = %s\n", param_name);
  return 0;
}

static void __exit param_exit_module(void)
{
  printk(KERN_INFO "param module exit\n");
}

module_init(param_init_module);
module_exit(param_exit_module);

MODULE_AUTHOR("lidonghang-02");
MODULE_LICENSE("GPL");
相关推荐
whyutianict_vv1 小时前
云计算 HCIE 认证体系解析:HCIA/HCIP/HCIE 三级科目与知识边界
linux·运维·云计算
0+1118 小时前
Linux --从 poll 到 epoll多路转接
linux·服务器·1024程序员节
青瓦梦滋8 小时前
WebSocket协议
linux·服务器·网络·c++·websocket·网络协议·http
桌面运维家9 小时前
旧电脑跑不动课程软件,VDI云桌面怎样接着用?
运维·服务器·虚拟化·pve·vdi·云桌面
zhang133830890759 小时前
传统机械三杯式风速传感器易磨损冻堵?CG-88金属超声波风速风向传感器给出免运维方案
运维·服务器·网络·人工智能·自动化
知已难寻9 小时前
第 2 篇 · 云的地基:服务器、存储、网络三大基础设施
运维·服务器·网络·云原生·云计算·负载均衡·1024程序员节
wangchunyu1149 小时前
JAVA CompletableFuture异步编程实战
java·开发语言·python
paopaokaka_luck10 小时前
流浪动物救助与收养系统(DeepSeek AI对话、 ECharts多维分析、救助流程衔接、领养与回访衔接、 捐赠确认与公示、志愿者协作)
java·前端·javascript·人工智能·mysql·echarts·推荐算法
Thomas.Sir10 小时前
第9课:SpringBoot4.x Web开发基础:WebMvc自动配置、静态资源、请求参数接收
java·spring boot
程序 代码狂人10 小时前
切片表与分区表的区别(数据开发面试版)
java·大数据·开发语言·数据仓库·算法