我正在看这个drivers/net/wireless/ti/wl18xx
驱动程序模块。
传统的module_init()
不在源代码中。跟踪转储显示wl18xx_driver_init()
被调用,尽管该函数再次不在源代码中。
我可以在该驱动程序目录的wl18xx_driver_init()
的objdump中看到main.o
。
是否在内核的较新版本中自动生成了这些功能/宏?怎么做?
答案 0 :(得分:2)
wl18xx_driver_init
随module_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 macro和module driver macro。
@最好在下一次发布一些源代码或链接,这样会更容易。包括内核版本也是一个好主意。