news 2026/4/23 14:19:13

19、Linux内核模块与设备驱动详解

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
19、Linux内核模块与设备驱动详解

Linux内核模块与设备驱动详解

1. 内核模块基础

1.1 模块加载与符号解析

内核模块加载时不需要.ko扩展名,加载后仅通过基名识别。模块通常会包含对外部符号(如printk)的引用,insmod会根据内核符号表解析这些外部引用,该符号表在核启动过程中加载到内存。模块中定义的导出符号会添加到内核符号表,供后续加载的模块使用。模块能引用的外部符号仅为内核映像中内置的或先前加载模块的符号,内核符号表可在/proc/ksyms中查看。

1.2 内核“污染”问题

安装模块时,可能会看到类似hello: module license ‘unspecified’ taints kernel的消息。这是因为内核维护者厌倦了处理涉及无源码内核模块的错误报告,为此发明了MODULE_LICENSE()宏,用于声明模块为开源。格式如下:

MODULE_LICENSE (",approved string.")

其中,approved stringlinux/include/linux/module.h中的 ASCII 文本字符串,常见的有 “GPL”。若模块按开源许可证(如 GPL)分发,可在代码中包含相应的MODULE_LICENSE()调用,加载模块时不

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/4/23 12:54:52

Spring AOP低级切面到高级切面详解

Aop基础 ps:欢迎指正错误,涉及了一点点Spring后置处理器的扫描的内容Aspectstatic class Aspect1 {org.aspectj.lang.annotation.Before("execution(* foo())")public void before1() {System.out.println("before1");}}一个简单的aop类-spring…

作者头像 李华
网站建设 2026/4/23 14:35:51

20、内核模块与设备驱动开发详解

内核模块与设备驱动开发详解 1. 设备号与驱动注册 在设备驱动开发中,设备号的处理是关键的第一步。我们可以使用 MKDEV(int, int) 宏,将主设备号和次设备号组合成一个 dev_t 类型的设备号。同时,还有 MAJOR(dev_t) 和 MINOR(dev_t) 这两个宏,用于从 dev_t 中提…

作者头像 李华
网站建设 2026/4/23 14:30:49

26、源代码控制——Git 入门与实践

源代码控制——Git 入门与实践 1. 源代码控制背景 源代码控制(SCC),也称为版本控制,是将项目的源代码文件和其他相关工件(如文档)存储在一个公共仓库中的实践。这样,多个开发者可以同时在项目上工作而互不干扰。SCC 软件会记录变更,并支持项目的多个版本同时存在。 …

作者头像 李华
网站建设 2026/4/23 14:26:05

探索GPT-5.2:提升工作效率的终极升级,你不能错过的新功能!

GPT-5.2的发布,给工作和创作带来哪些革命性变化? 随着人工智能技术的不断进步,OpenAI的GPT系列一直走在最前沿。特别是最新发布的GPT-5.2,相比于前一版本,带来了众多令人兴奋的改进和全新功能。不论你是创作者、项目经…

作者头像 李华
网站建设 2026/4/23 12:29:25

汪洁步道Daily scrum report 8:Github开源

🐾 汪洁步道:Beta 阶段计划与估计 📌 项目信息 项目名称: 「汪洁步道」——家庭必备的宠物清洗神器 项目阶段: Beta 阶段 项目链接: 🔗https://blog.csdn.net/bboy_lemon/article/details/15426…

作者头像 李华
网站建设 2026/4/23 10:12:50

SKT A.X 3.1:韩国主权AI里程碑,重新定义韩语大模型标准

SKT A.X 3.1:韩国主权AI里程碑,重新定义韩语大模型标准 【免费下载链接】A.X-3.1 项目地址: https://ai.gitcode.com/hf_mirrors/skt/A.X-3.1 导语:韩国AI自主化战略核心成果落地 2025年7月24日,韩国电信巨头SK Telecom正…

作者头像 李华