linux 内核传参 module_param_cb

简介

https://www.google.com.hk/url?sa=t&rct=j&q=&esrc=s&source=web&cd=&ved=2ahUKEwiU1Kiz5aOKAxW0wTgGHZjnDL8QFnoECBYQAQ&url=https%3A%2F%2Fblog.csdn.net%2Fzongzidedandan%2Farticle%2Fdetails%2F132475615&usg=AOvVaw0CR6uvFlW4mqDItx560AHq&opi=89978449

源码

#include <linux/module.h>
#include <linux/kernel.h>
#include <linux/init.h>
#include <linux/kern_levels.h> // For pr_infostatic int my_int_param = 42;static int lyrix_get_int(char *buffer, const struct kernel_param *kp)
{return sprintf(buffer, "%d\n", my_int_param);
}static int lyrix_set_int(const char *val, const struct kernel_param *kp)
{int my_value;int ret;ret = kstrtoint(val, 0, &my_value);if (ret)return ret;my_int_param = my_value;return 0;
}static const struct kernel_param_ops my_param_ops = {.set = lyrix_set_int,.get = lyrix_get_int,
};module_param_cb(my_int_param, &my_param_ops, &my_int_param, 0644);static int __init my_module_init(void)
{pr_info("my_module_init: my_int_param = %d\n", my_int_param);return 0;
}static void __exit my_module_exit(void)
{pr_info("my_module_exit\n");
}module_init(my_module_init);
module_exit(my_module_exit);MODULE_LICENSE("GPL");
MODULE_AUTHOR("Your Name");
MODULE_DESCRIPTION("A simple module demonstrating module_param_cb usage");

编译

makefile写入:obj-m := lyrix_test.o
执行make指令:
make -C <kernel/source> M=`pwd` modules ARCH=arm64  CROSS_COMPILE=<交叉编译器/bin/aarch64-none-linux-gnu->

运行

root@imx93evk:~# modinfo lyrix_test.ko
filename:       /root/lyrix_test.ko
description:    A simple module demonstrating module_param_cb usage
author:         Your Name
license:        GPL
depends:
name:           lyrix_test
vermagic:       6.6.23-06237-gce96b1e1d872-dirty SMP preempt mod_unload modversions aarch64
root@imx93evk:~#
root@imx93evk:~#
root@imx93evk:~# insmod lyrix_test.ko
[   46.541639] lyrix_test: loading out-of-tree module taints kernel.
[   46.548249] my_module_init: my_int_param = 42
root@imx93evk:~#
root@imx93evk:~# echo 11 > /sys/module/lyrix_test/parameters/my_int_param
root@imx93evk:~#
root@imx93evk:~# cat /sys/module/lyrix_test/parameters/my_int_param
11

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/889508.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

虚幻引擎Actor类生命周期

AActor构造函数 在AActor类的构造函数中,虚幻引擎会初始化与该Actor相关的一些关键属性,比如: 默认的组件(如RootComponent、MeshComponent等)。默认的属性设置,例如位置、旋转、缩放等。还会调用BeginPlay等生命周期函数,但在构造函数中,这些函数不会执行。当你在场景…

Referer头部在网站反爬虫技术中的运用

网站数据的安全性和完整性至关重要。爬虫技术&#xff0c;虽然在数据收集和分析中发挥着重要作用&#xff0c;但也给网站管理员带来了挑战。为了保护网站数据不被恶意爬取&#xff0c;反爬虫技术应运而生。本文将探讨HTTP头部中的Referer字段在反爬虫技术中的应用&#xff0c;并…

【ArcGIS微课1000例】0135:自动生成标识码(长度不变,前面自动加0)

文章目录 一、加载实验数据二、BSM计算方法一、加载实验数据 加载专栏《ArcGIS微课实验1000例(附数据)》配套数据中0135.rar中的建筑物数据,如下图所示: 打开属性表,BSM为数据库中要求的字段:以TD_T 1066-2021《不动产登记数据库标准》为例: 计算出来的BSM如下图: 二、B…

NVR小程序接入平台/设备EasyNVR深度解析H.265与H.264编码视频接入的区别

随着科技的飞速发展和社会的不断进步&#xff0c;视频压缩编码技术已经成为视频传输和存储中不可或缺的一部分。在众多编码标准中&#xff0c;H.265和H.264是最为重要的两种。今天我们来将深入分析H.265与H.264编码的区别。 一、H.265与H.264编码的区别 1、比特率与分辨率 H.…

华硕奥创软件在线安装和离线安装方法

华硕奥创软件在线安装和离线安装方法 1. 华硕奥创软件介绍2. 华硕奥创软件在线安装2.1 第一种2.2 第二种 3. 华硕奥创软件离线安装3.1 概述3.2 华硕奥创软件离线包下载方式 4. 卸载华硕奥创软件4.1 概述4.2 华硕奥创卸载软件下载与使用方式 结束语 1. 华硕奥创软件介绍 华硕奥…

minio 分布式文件管理

一、minio 是什么&#xff1f; MinIO构建分布式文件系统&#xff0c;MinIO 是一个非常轻量的服务,可以很简单的和其他应用的结合使用&#xff0c;它兼容亚马逊 S3 云存储服务接口&#xff0c;非常适合于存储大容量非结构化的数据&#xff0c;例如图片、视频、日志文件、备份数…

对rust的全局变量使用drop方法

文章目录 rust处理全局变量的策略方法1&#xff1a;在main中自动Drop全局变量 参考 rust处理全局变量的策略 Rust 的静态变量不会在程序退出时自动调用 Drop&#xff0c;因为它们的生命周期与进程绑定。 use std::sync::OnceLock;struct GlobalData {content: String, }impl …

A6688 JSP+MYSQL+LW+二手物品网上交易系统

二手物品网上交易系统的设计与实现 1.摘要2.开发目的和意义3.系统功能设计4.系统界面截图5.源码获取 1.摘要 摘 要 随着社会经济快速发展&#xff0c;互联网推动了电子商务业的迅速崛起。越来越多的人们喜欢在线进行商品的交易&#xff0c;尤其是对于二手物品的处理&#xff0…

Pandas常见函数

Pandas 是 Python 中用于数据分析和处理的强大工具库。以下是 Pandas 中一些常见的函数和方法&#xff0c;按用途分类总结&#xff1a; 1. 数据创建 pd.Series(data, index)&#xff1a;创建一维的序列对象。pd.DataFrame(data, index, columns)&#xff1a;创建二维的DataFra…

算法分析与设计之分治算法

文章目录 前言一、分治算法divide and conquer1.1 分治定义1.2 分治法的复杂性分析&#xff1a;递归方程1.2.1 主定理1.2.2 递归树法1.2.3 迭代法 二、典型例题2.1 Mergesort2.2 Counting Inversions2.3 棋盘覆盖2.4 最大和数组2.5 Closest Pair of Points2.6 Karatsuba算法&am…

Ubuntu 安装 Samba Server

在 Mac 上如何能够与Ubuntu 服务器共享文件夹&#xff0c;需要在 Ubuntu 上安装 Samba 文件服务器。本文将介绍如何在 Ubuntu 上安装 Samba 服务器从而达到以下目的&#xff1a; Mac 与 Ubuntu 共享文件通过用户名密码访问 安装 Samba 服务 sudo apt install samba修改配置文…

计算机毕设-基于springboot的青少年心理健康教育网站的设计与实现(附源码+lw+ppt+开题报告)

博主介绍&#xff1a;✌多个项目实战经验、多个大型网购商城开发经验、在某机构指导学员上千名、专注于本行业领域✌ 技术范围&#xff1a;Java实战项目、Python实战项目、微信小程序/安卓实战项目、爬虫大数据实战项目、Nodejs实战项目、PHP实战项目、.NET实战项目、Golang实战…

redis 怎么样删除list

在 Redis 中&#xff0c;可以使用以下方法删除列表或列表中的元素&#xff1a; 1. 删除整个列表 使用 DEL 命令删除一个列表键&#xff1a; DEL mylist这个命令会删除键 mylist 及其值&#xff08;无论 mylist 是一个列表还是其他类型的键&#xff09;。 2. 删除列表中的部分…

解读数据资产管理实践白皮书(5.0版)深入学习掌握数据资产管理知识体系。

本文介绍了数据资产管理的重要性及其概述&#xff0c;详细阐述了数据资产管理的活动职能包括数据模型管理、数据标准管理、数据质量管理等&#xff0c;并强调了数据安全管理的重要性。文章还讨论了数据资产管理的保障措施和实践步骤&#xff0c;以及发展趋势和总结展望。 重点内…

深入探索 jQuery:解锁前端开发的高效工具

深入探索 jQuery&#xff1a;解锁前端开发的高效工具 在现代Web开发中&#xff0c;jQuery无疑是一个不可或缺的工具。它简化了HTML文档遍历、事件处理、动画和Ajax交互等任务&#xff0c;使得开发者能够更专注于逻辑和用户体验的实现。本文将详细介绍一些常用的jQuery方法&…

过滤器与ajax异步

探索 Java Web 开发中的过滤器与 Ajax 异步请求 在 Java Web 开发的世界里&#xff0c;过滤器&#xff08;Filter&#xff09;和 Ajax 异步请求犹如两把利器&#xff0c;为我们打造高效、安全且用户体验良好的 Web 应用提供了强大的支持。今天&#xff0c;就让我们深入了解这两…

百度23届秋招前端岗

百度23届秋招前端岗 2024/12/13 1.小红的01串 小红拿到了一个01串&#xff0c;她每次可以选择一个长度为2的连续子串取反&#xff08;0变1&#xff0c;1变0&#xff09;&#xff0c;她想知道&#xff0c;是否能在有限的操作次数内使得所有字符相同&#xff1f;共有&#x1…

OCR 技术在验证码识别中的应用

OCR 技术在验证码识别中的应用 一、验证码识别的背景与挑战二、OCR 技术简介三、验证码识别的环境搭建四、使用 OCR 进行验证码识别的方法五、DdddOcr 子项在验证码识别中的应用六、验证码识别的应用场景与注意事项七、总结 在当今数字化时代&#xff0c;验证码作为一种安全验证…

Elasticsearch 集群部署

Elasticsearch 是一个分布式的搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置&#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我…

解决Java连接MySQL 错误:Public Key Retrieval is not allowed

在使用 Java 的 JDBC 驱动&#xff08;如 MySQL Connector/J&#xff09;连接 MySQL 数据库时&#xff0c;可能会遇到以下错误提示&#xff1a; Public Key Retrieval is not allowed 错误原因 此问题通常与 MySQL 默认的身份验证插件 caching_sha2_password 有关。当 MySQ…