深入linux设备驱动程序-1内核模块

文章讲述了Linux内核模块的文件格式是ELF,并解释了export_symbol的作用,它是用于解决静态编译的内核与动态导入的模块间函数调用的问题。当使用insmod命令加载模块时,会通过sys_init_module系统调用在内核中处理加载流程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

1 内核模块文件存在格式

ELF格式:Executable and Linkable Format

2 export_symbol内核实现

单一linux内核加载方式是静态映射(即静态编译),如果有独立存在的内核模块,需要给单一linux内核导入、而独立存在的内核模块不可避免需要调用内核设备基础设施(函数或底层接口),因为linux单一内核是静态编译,独立存在的内核模块是动态导入,将导致调用内核模块时,内核模块会调用内核设备基础设施,找不到基础设施对应的函数(因为没导入,对应的基础设施函数没有随内核模块一并导入),export_symbol就是干这个,将内核模块会用到的符号(基础设备、函数)导入

3 模块加载过程

在用户空间可通过insmod命令向内核空间安装一个内核模块

调用方式为 insmod demodev.ko,会先将文件内容读到用户空间的内存,再调用系统调用sys_init_module让内核处理模块加载流程

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值