diff --git a/xtoskrnl/ke/i686/krnlinit.c b/xtoskrnl/ke/i686/krnlinit.c index 654f80c0..4a3b69d9 100644 --- a/xtoskrnl/ke/i686/krnlinit.c +++ b/xtoskrnl/ke/i686/krnlinit.c @@ -37,6 +37,15 @@ KepInitializeKernel(VOID) PageDirectory[1] = 0; KeInitializeProcess(CurrentThread->ApcState.Process, 0, 0xFFFFFFFF, PageDirectory, FALSE); CurrentThread->ApcState.Process->Quantum = MAXCHAR; + + /* Initialize Idle thread */ + KeInitializeThread(CurrentThread->ApcState.Process, CurrentThread, NULL, NULL, NULL, NULL, NULL, Prcb->DpcStack); + CurrentThread->NextProcessor = Prcb->Number; + CurrentThread->Priority = THREAD_HIGH_PRIORITY; + CurrentThread->State = Running; + CurrentThread->Affinity = (ULONG_PTR)1 << Prcb->Number; + CurrentThread->WaitIrql = DISPATCH_LEVEL; + CurrentThread->ApcState.Process->ActiveProcessors |= (ULONG_PTR)1 << Prcb->Number; } /**