Linux内核wl18xx module_init是否生成?

时间:2018-06-30 00:12:16

标签: linux-kernel kernel-module

我正在看这个drivers/net/wireless/ti/wl18xx驱动程序模块。

传统的module_init()不在源代码中。跟踪转储显示wl18xx_driver_init()被调用,尽管该函数再次不在源代码中。

我可以在该驱动程序目录的wl18xx_driver_init()的objdump中看到main.o

是否在内核的较新版本中自动生成了这些功能/宏?怎么做?

1 个答案:

答案 0 :(得分:2)

wl18xx_driver_initmodule_platform_driver(wl18xx_driver)宏的扩展而生成here。 它大致扩展为:

static int __init wl18xx_driver_init(void) { 
   return platform_driver_register(&(wl18xx_driver)); 
} 
static initcall_t __initcall_wl18xx_driver_init6 __used __attribute__((__section__(".initcall" "6" ".init"))) = wl18xx_driver_init; 
static void __exit wl18xx_driver_exit(void) { 
    platform_driver_unregister(&(wl18xx_driver)); 
} 
static exitcall_t __exitcall_wl18xx_driver_exit __exit_call = wl18xx_driver_exit;

请参见module_platform_driver macromodule driver macro

@最好在下一次发布一些源代码或链接,这样会更容易。包括内核版本也是一个好主意。