【发布时间】:2015-03-03 00:45:15
【问题描述】:
如果驱动程序被静态编译到内核中,我相信 MODULE_VERSION 不起作用。在 sysfs 中找不到版本号。 modinfo 不起作用,因为它不是加载的模块。 那么获取此驱动程序的 MODULE_VERSION 或在驱动程序中编码版本号的最佳方法是什么。有这样做的标准方法还是我应该简单地使用 sysfs?
【问题讨论】:
标签: linux-kernel linux-device-driver
如果驱动程序被静态编译到内核中,我相信 MODULE_VERSION 不起作用。在 sysfs 中找不到版本号。 modinfo 不起作用,因为它不是加载的模块。 那么获取此驱动程序的 MODULE_VERSION 或在驱动程序中编码版本号的最佳方法是什么。有这样做的标准方法还是我应该简单地使用 sysfs?
【问题讨论】:
标签: linux-kernel linux-device-driver
首先,在树模块中拥有一个模块版本没有多大意义。否则,它会保留为称为__modver 的特殊部分。
$ objdump -h ~/prj/TMP/out/mfld/vmlinux -j __modver
/home/andy/prj/TMP/out/mfld/vmlinux: file format elf32-i386
Sections:
Idx Name Size VMA LMA File off Algn
12 __modver 00000c40 c1a003c0 01a003c0 00a013c0 2**2
CONTENTS, ALLOC, LOAD, RELOC, READONLY, DATA
它包含指向在宏MODULE_VERSION 中定义在include/linux/module.h 中的相应结构的指针。
【讨论】:
uname -a 通常显示内核版本。如果版本被更改,则添加哈希。所以,你总是知道版本是什么。 Linux 版本 4.0.0-rc3-next-20150313+ #123 SMP Fri Mar 13 15:54:01 EET 2015