Linux内核中.mod.c文件中版本信息的含义
在所有可加载的内核模块中,当给出make时,除了modulename.ko之外,它还会生成一个名为modulename.mod.c的文件.
以下代码摘录来自.mod.c文件,其中包含{number,function}对. static const struct modversion_info ____versions[] __used __attribute__((section("__versions"))) = { { 0xa6d8dcb5,"module_layout" },{ 0x16c2b958,"register_netdevice" },{ 0x609f1c7e,"synchronize_net" },{ 0x90a60c63,"kmem_cache_destroy" },{ 0x402b8281,"__request_module" },{ 0x844a8af7,"netdev_info" },{ 0xdfdb0ee8,"kmalloc_caches" },{ 0x12da5bb2,"__kmalloc" },{ 0x92d42843,"cfg80211_cqm_rssi_notify" },{ 0xc86289e8,"perf_tp_event" },... ... } 解决方法
__versions部分包含在所有单独的* .mod.c文件中
CRC Symbol { 0xa6d8dcb5,... ... 是一个符号列表及其相应的CRC.这有两个主要用途: >所有导出符号的全局列表. 模块版本控制背后的基本原理
编译成功后,所有导出符号的所有CRC的全局列表都存储在Linux内核源目录的Module.symvers文件中.本质上,此检查确保从内核模块调用的任何导出符号都存在于模块所期望的相同位置(内核中的偏移量). modpost工具在编译Linux内核期间生成CRC.它由modpost script调用.整个过程在Documentation/kbuild/modules.txt:438详细解释. entire source code of the modpost tool在Linux内核源代码中可用. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- linux – 将最后n行复制到新文件,然后从原始文件中删除n行
- linux – 如何使用CPack以特定方式为QT应用程序打包依赖项?
- linux – 在Perl中具有修改的调度优先级的Runnig OS功能
- linux – 用于sendmail的ssh隧道
- linux – 使用Unix排序使用小数部分对pos / neg数字进行排序
- debianLinux 系统进入单用户
- 在Redhat Enterprise Server上安装python-ldap时解决GCC错误
- 使用scp提示错误ECDSA host key for [ip address] has chan
- linux – 在LVM中使用单个磁盘的分区时,IOPS的行为是什么?
- 如何在Linux上的某个时间运行脚本?