当前位置: 首页 > news >正文

[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目录,里面包含以参数名为名的文件,文件中保存了参数的值。

代码

/** @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");

相关文章:

  • 【开源项目】智慧北京案例~超经典实景三维数字孪生智慧城市CIM/BIM数字孪生可视化项目——开源工程及源码!
  • redis之集群
  • Python web 开发 flask 实践
  • 汇凯金业:现货黄金投资平仓策略有哪些
  • 暴雨讲堂|通往AGI的必由之路—AI agent是什么?
  • 超详细的linux-conda环境安装教程
  • svm 超参数
  • maxwell源码编译安装部署
  • Docker 从安装到使用的完整指南
  • Python抓取高考网图片
  • Android屏幕旋转流程(1)
  • 代理网络基础设施 101:增强安全性、速度和可扩展性
  • 生成式人工智能时代的5大网络安全趋势
  • AI大模型部署Ubuntu服务器攻略
  • Navicat和SQLynx产品功能比较一(整体比较)
  • 【Leetcode】104. 二叉树的最大深度
  • Android优雅地处理按钮重复点击
  • Java 最常见的 200+ 面试题:面试必备
  • Javascript基础之Array数组API
  • Linux学习笔记6-使用fdisk进行磁盘管理
  • Mithril.js 入门介绍
  • Mysql数据库的条件查询语句
  • Nodejs和JavaWeb协助开发
  • php ci框架整合银盛支付
  • React 快速上手 - 07 前端路由 react-router
  • vue--为什么data属性必须是一个函数
  • 编写符合Python风格的对象
  • 关于 Cirru Editor 存储格式
  • 基于遗传算法的优化问题求解
  • 算法系列——算法入门之递归分而治之思想的实现
  • 通信类
  • 原生Ajax
  • #pragma data_seg 共享数据区(转)
  • #我与Java虚拟机的故事#连载01:人在JVM,身不由己
  • (13)DroneCAN 适配器节点(一)
  • (2009.11版)《网络管理员考试 考前冲刺预测卷及考点解析》复习重点
  • (3)选择元素——(17)练习(Exercises)
  • (4) PIVOT 和 UPIVOT 的使用
  • (done) 两个矩阵 “相似” 是什么意思?
  • (floyd+补集) poj 3275
  • (Matalb时序预测)WOA-BP鲸鱼算法优化BP神经网络的多维时序回归预测
  • (附程序)AD采集中的10种经典软件滤波程序优缺点分析
  • (附源码)php投票系统 毕业设计 121500
  • (十八)用JAVA编写MP3解码器——迷你播放器
  • (十六)Flask之蓝图
  • (中等) HDU 4370 0 or 1,建模+Dijkstra。
  • (转)http协议
  • .NET CORE 第一节 创建基本的 asp.net core
  • .Net高阶异常处理第二篇~~ dump进阶之MiniDumpWriter
  • .NET与 java通用的3DES加密解密方法
  • .net与java建立WebService再互相调用
  • .NET正则基础之——正则委托
  • [AI Google] Ask Photos: 使用Gemini搜索照片的新方法
  • [BZOJ 4598][Sdoi2016]模式字符串
  • [C++] 默认构造函数、参数化构造函数、拷贝构造函数、移动构造函数及其使用案例