Linux内核设备驱动之Linux内核模块加载机制的示例分析
发表于:2026-11-03 作者:千家信息网编辑
千家信息网最后更新 2026年11月03日,小编给大家分享一下Linux内核设备驱动之Linux内核模块加载机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧
千家信息网最后更新 2026年11月03日Linux内核设备驱动之Linux内核模块加载机制的示例分析
小编给大家分享一下Linux内核设备驱动之Linux内核模块加载机制的示例分析,相信大部分人都还不怎么了解,因此分享这篇文章给大家参考一下,希望大家阅读完这篇文章后大有收获,下面让我们一起去了解一下吧!
#include
1. 模块参数
在驱动定义变量
static int num = 0; //当加载模块不指定num的值时则为0
module_param(变量名, 类型, 权限);类型: byte, int, uint, short, ushort, long, ulong, bool, charp,权限不能有写的权限
传参数: insmod test.ko 变量名1=值1 变量名2=值2
module_param的调用关系如下:
#define module_param(name, type, perm) \module_param_named(name, name, type, perm)#define module_param_named(name, value, type, perm) \param_check_##type(name, &(value)); \module_param_call(name, param_set_##type, param_get_##type, &value, perm); \__MODULE_PARM_TYPE(name, #type)#define module_param_call(name, set, get, arg, perm) \__module_param_call(MODULE_PARAM_PREFIX, \ name, set, get, arg, \ __same_type(*(arg), bool), perm)#define __module_param_call(prefix, name, set, get, arg, isbool, perm) \static int __param_perm_check_##name __attribute__((unused)) = \BUILD_BUG_ON_ZERO((perm) < 0 || (perm) > 0777 || ((perm) & 2)) \+ BUILD_BUG_ON_ZERO(sizeof(""prefix) > MAX_PARAM_PREFIX_LEN); \static const char __param_str_##name[] = prefix #name; \static struct kernel_param __moduleparam_const __param_##name \__used \ __attribute__ ((unused,__section__ ("__param"),aligned(sizeof(void *)))) \= { __param_str_##name, perm, isbool ? KPARAM_ISBOOL : 0, \ set, get, { arg } }多个c文件编成一个模块,可以使用xxx-objs这个Makefile中的指令来实现,如下:
test-objs := a.o b.o //由a.c, b.c 编成test.ko, 注意不能有.o文件与目标ko文件同名obj-m += test.o
可在/sys/module/模块名/下查看模块在系统的信息
1. 查看elf文件的信息
readelf test.ko -a
ko文件组成
1. elf文件头
2. text data ...
3. sections table
4. symbol table
2. EXPORT_SYMBOL(函数名/变量的地址) //把函数/或者变量的地址导出到内核的符号表中
EXPORT_SYMBOL_GPL(函数名)///////////
/proc/kallsyms 查看当前系统的符号表
以上是"Linux内核设备驱动之Linux内核模块加载机制的示例分析"这篇文章的所有内容,感谢各位的阅读!相信大家都有了一定的了解,希望分享的内容对大家有所帮助,如果还想学习更多知识,欢迎关注行业资讯频道!
模块
变量
文件
内核
驱动
函数
权限
篇文章
机制
示例
设备
设备驱动
分析
信息
内容
参数
地址
符号
类型
系统
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
科技互联网
有格互联网科技
上海睿民互联网科技有限公司
上海卓越科技互联网
重生之互联网科技帝国
科技互联网公司装修
智能科技公司是互联网公司吗
电子科技大学互联网
长亮科技 互联网金融
互联网科技创新企业排名
中国互联网有什么科技含量
中化能源互联网科技招聘
电子科技大学互联网创业大赛
亳州好赞互联网科技有限公司
深圳市罗太互联网科技有限公司
华中科技大学互联网的牛人
深圳互联网科技的发展
产业互联网科技服务公司
互联网科技接地气
互联网科技品牌
互联网科技有限公司
互联网科技园
湖北九亚互联网络科技有限公司
互联网科技巨头监管
互联网科技金融公司
互联网和高科技公司
中盈科技互联网信息有限公司
智帮互联网科技公司最近动向
广东猫王互联网科技有限公司电话
银川新华互联网科技学校招聘