我需要修改Linux 3.2.0中的内核模块。在drivers/staging/bcm
内,驱动程序应支持设备ID 198F:015E
,而不是在InterfaceInit.h
文件中,它被称为198F:15E
,我将其更改为015E
,但在成功编译之后,内核仍然不会使用新的设备ID。
这是modinfo
的输出:
filename: <somewhere/>bcm_wimax.ko
license: GPL
version: 5.2.45
description: Beceem Communications Inc. WiMAX driver
srcversion: D6016018ABCFFD16AF31D22
alias: usb:v19D2p0007d*dc*dsc*dp*ic*isc*ip*
alias: usb:v0489pE017d*dc*dsc*dp*ic*isc*ip*
alias: usb:v19D2p0132d*dc*dsc*dp*ic*isc*ip*
alias: usb:v198FpBCCDd*dc*dsc*dp*ic*isc*ip*
alias: usb:v198Fp0220d*dc*dsc*dp*ic*isc*ip*
alias: usb:v198Fp0210d*dc*dsc*dp*ic*isc*ip*
alias: usb:v198Fp0300d*dc*dsc*dp*ic*isc*ip*
depends:
vermagic: 3.2.0-26-generic-pae SMP mod_unload modversions 686
parm: debug:Debug level (0=none,...,16=all) (uint)
我的
198F:015E
仍然没有出现!奇怪的是,开始编译后,我看到在模块源文件夹中生成了一个名为bcm_wimax.mod.c的文件。在里面,我发现了modinfo
别名。看起来像: #include <linux/module.h>
#include <linux/vermagic.h>
#include <linux/compiler.h>
MODULE_INFO(vermagic, VERMAGIC_STRING);
struct module __this_module
__attribute__((section(".gnu.linkonce.this_module"))) = {
.name = KBUILD_MODNAME,
.init = init_module,
#ifdef CONFIG_MODULE_UNLOAD
.exit = cleanup_module,
#endif
.arch = MODULE_ARCH_INIT,
};
MODULE_INFO(staging, "Y");
static const struct modversion_info ____versions[]
__used
__attribute__((section("__versions"))) = {
};
static const char __module_depends[]
__used
__attribute__((section(".modinfo"))) =
"depends=";
MODULE_ALIAS("usb:v198Fp0300d*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v198Fp0210d*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v198Fp0220d*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v198FpBCCDd*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v19D2p0132d*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v0489pE017d*dc*dsc*dp*ic*isc*ip*");
MODULE_ALIAS("usb:v19D2p0007d*dc*dsc*dp*ic*isc*ip*");
MODULE_INFO(srcversion, "D6016018ABCFFD16AF31D22");
但是我尝试修改
bcm_wimax.mod.c
,但在编译后,文件恢复为原始状态,删除了我的编辑。我如何将198f:015e
添加到模块别名部分? 最佳答案
198F:015E
与198F:15E
相同
查看内核源代码,似乎您对BCM_USB_PRODUCT_ID_SYM
感兴趣,但是该设备在InterfaceUsbtable
drivers/staging/bcm/InterfaceInit.c
中不存在。
您可以添加它,并希望驱动程序也支持该设备。
关于linux - 在Linux内核模块中自定义.mod.c MODULE_ALIAS,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/11813635/