PKPRCB Prcb = KeGetCurrentPrcb();
PKTHREAD OldThread, NewThread;
- /* Initialize the idle loop: disable interrupts */
- _enable();
- YieldProcessor();
- YieldProcessor();
- _disable();
-
/* Now loop forever */
while (TRUE)
{
+ /* Start of the idle loop: disable interrupts */
+ _enable();
+ YieldProcessor();
+ YieldProcessor();
+ _disable();
+
/* Check for pending timers, pending DPCs, or pending ready threads */
if ((Prcb->DpcData[0].DpcQueueDepth) ||
(Prcb->TimerRequest) ||
/* Check if a new thread is scheduled for execution */
if (Prcb->NextThread)
{
- /* Enable interupts */
+ /* Enable interrupts */
_enable();
/* Capture current thread data */
/* Go back to DISPATCH_LEVEL */
KeLowerIrql(DISPATCH_LEVEL);
-
- /* We are back in the idle thread -- disable interrupts again */
- _enable();
- YieldProcessor();
- YieldProcessor();
- _disable();
}
else
{
return STATUS_UNSUCCESSFUL;
}
-#undef ExQueryDepthSList
-NTKERNELAPI
-USHORT
-ExQueryDepthSList(IN PSLIST_HEADER ListHead)
-{
- return (USHORT)(ListHead->Alignment & 0xffff);
-}
-
-
ULONG ProcessCount;
BOOLEAN CcPfEnablePrefetcher;