Files
nt-lite/code/kernel/include/kernel/ke_smp.h
T

28 lines
1.2 KiB
C

// Kernel ke smp declarations shared by implementation files and kernel clients.
#pragma once
#include <stdint.h>
#include <ntlite/status.h>
// Provide an optional bootloader-reserved low-memory trampoline page.
void KeSetApplicationProcessorTrampoline(uint64_t trampolinePhys);
// Start application processors with hardware INIT/SIPI and park them in
// kernel-owned state. APs are not runnable until scheduler admission succeeds.
KSTATUS KeStartApplicationProcessors(void);
// Create one scheduler idle thread per AP and release APs from the raw kernel
// park loop into their idle threads.
KSTATUS KeAdmitApplicationProcessorsToScheduler(void);
// Decode CPUID topology and build per-KCPU package/core/SMT sibling masks.
// KeStartApplicationProcessors calls this after MADT enumeration; it is also
// safe to call again after failed AP startup disables a CPU record.
void KeBuildProcessorTopology(void);
// Run explicit AP-affine kernel workers that exercise the global scheduler,
// reschedule IPIs, yield, and event wait/wake. Normal kernel/user/driver
// threads remain BSP-affine unless their affinity is explicitly widened.
KSTATUS KeRunApplicationProcessorSchedulerSelfTests(void);