Ядро Linux wl18xx module_init это генерируется? - PullRequest
0 голосов
/ 30 июня 2018

Я смотрю на этот drivers/net/wireless/ti/wl18xx модуль драйвера.

Традиционный module_init() отсутствует в исходном коде. Тем не менее, дамп трассировки показывает, что wl18xx_driver_init() вызван, хотя эта функция снова отсутствует в исходном коде.

Я вижу wl18xx_driver_init() в objdump main.o в этом каталоге драйверов.

Неужели в последних версиях ядер эти функции / макросы генерируются автоматически? Как это сделать?

1 Ответ

0 голосов
/ 30 июня 2018

wl18xx_driver_init генерируется здесь с расширением 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 и макрос драйвера модуля .

@ Лучше всего в следующий раз опубликовать исходный код или ссылки, так будет проще. Включение версии ядра также будет хорошей идеей.

...