Nos programas de espaço do usuário, main()
é o ponto de entrada para o programa que é chamado pelo código de inicialização da libc quando o binário é executado. O código do kernel não tem o luxo de depender da libc, já que a própria libc depende da interface syscall do kernel para alocação de memória, E / S, gerenciamento de processos, etc.
Dito isso, o equivalente a main()
no código do kernel é start_kernel()
, que é chamado pelo gerenciador de inicialização depois de ter carregado a imagem do kernel, descomprimiu-a na memória e configurou o hardware essencial e a paginação de memória. start_kernel()
realiza a maioria da configuração do sistema e, eventualmente, gera o processo init.
O ponto de entrada para os módulos do kernel Linux é uma função init registrada no kernel chamando a macro module_init()
. A função init do módulo registrado é então chamado pelo código do kernel através do do_initcalls()
função durante a inicialização do kernel.