|
PatchworkOS
28a9544
A non-POSIX operating system.
|
Symmetric Multiprocessing Others Initialization. More...
Modules | |
| Trampoline | |
| Trampoline for CPU initialization. | |
Functions | |
| void | smp_others_init (void) |
| Initialize all other CPUs in the system. | |
Symmetric Multiprocessing Others Initialization.
Initializes all other CPUs in the system.
This module will panic if it, at any point, fails. This is because error recovery during CPU initialization is way outside the scope of my patience.
| void smp_others_init | ( | void | ) |
Initialize all other CPUs in the system.
Definition at line 33 of file smp.c.
References acpi_tables_lookup(), processor_local_apic_t::apicId, assert, CLOCKS_PER_SEC, cpu_amount(), cpu_get_unsafe(), CPU_ID_BOOTSTRAP, ERR, processor_local_apic_t::flags, processor_local_apic_t::header, cpu_t::id, INTERRUPT_CONTROLLER_PROCESSOR_LOCAL_APIC, interrupt_disable(), interrupt_enable(), cpu_t::lapicId, LOG_DEBUG, LOG_INFO, madt, MADT_FOR_EACH, MADT_SIGNATURE, memset(), NULL, panic(), PML_GLOBAL, PML_PRESENT, PML_WRITE, PROCESSOR_LOCAL_APIC_ENABLED, trampoline_deinit(), trampoline_init(), trampoline_send_startup_ipi(), trampoline_wait_ready(), interrupt_controller_header_t::type, vmm_alloc(), and VMM_ALLOC_NONE.
Referenced by _module_procedure().