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

时间:2012-08-05 03:00:17

标签: linux module compilation kernel driver

我需要修改位于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添加到模块别名部分?

1 个答案:

答案 0 :(得分:2)

198F:015E198F:15E

相同

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

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

相关问题