在Linux内核模块中定制.mod.c MODULE_ALIAS

我需要修改位于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:015E198F:15E相同

看看内核源代码,似乎您对BCM_USB_PRODUCT_ID_SYM感兴趣,但该设备不在InterfaceUsbtable drivers/staging/bcm/InterfaceInit.c

您可以添加它,并希望驱动程序也支持该设备。