Linux 内核wl18xx module_init 是否生成?

Linux kernel wl18xx module_init is it generated?

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

繁体module_init()不在源代码中。然而,跟踪转储显示调用了 wl18xx_driver_init(),尽管该函数再次不在源代码中。

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

是否在最新版本的内核中自动生成了functions/macros?这是怎么做到的?

wl18xx_driver_init是由here扩展生成的module_platform_driver(wl18xx_driver)宏。 它大致扩展为:

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 macro and module driver macro

@ 下次最好post 一些源码或者链接,这样会方便一些。包括内核版本也是一个好主意。