Dentro de cada programa, há um main.c
. Dentro do main, há uma main
função que é chamada antes de qualquer outra função. Lembro que dentro dos compiladores, há também uma diretiva que chama uma função definida antes de main
.
__attribute__ ((constructor))
É assim que a maioria dos programas funciona. Tenho certeza de que o Linux Kernel é um caso diferente. Depois de olhar o main.c
arquivo em init/kernel
, não parece haver uma main
função.
Funções são declaradas com uma __init
diretiva. Veja o exemplo abaixo:
asmlinkage __visible __init __no_sanitize_address __noreturn __no_stack_protector
void start_kernel(void)
Qual é a ordem em que o código é chamado dentro do main.c
procedimento de inicialização do Linux?