
В start_kernel()
, одним из первых действий, выполняемых ядром, является запуск setup_arch()
. setup_arch()
определен для каждой поддерживаемой архитектуры, поэтому ему передается указатель на соответствующую командную строку.
Как инициализируется этот указатель, и как и когда ядро получает архитектуру компьютера?
решение1
Каждое ядро создано для одной архитектуры, поэтому оно имеет единственную реализацию setup_arch
.Общийstart_kernel
вызывает его, но он не передает инициализированный указатель в командную строку, он передает указатель на указатель в командную строку, и setup_arch
инициализация этого указателя является частью работы .
Например,x86 имеет глобальную command_line
переменную, И егоsetup_arch
сохраняет свой адрес в указателе, предоставленномstart_kernel
.
Таким образом, ядро фактически получает архитектуру компьютера при его сборке.