28 lines
1.2 KiB
C
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);
|