[NTOS:KE]

- Make sure to disable interrupts each iteration of the idle loop, since IdleFunction can leave them enabled.
CORE-12985 #resolve

svn path=/trunk/; revision=74235
This commit is contained in:
Thomas Faber 2017-03-27 20:16:59 +00:00
parent 73696326a3
commit 10236225d3

View file

@ -270,15 +270,15 @@ KiIdleLoop(VOID)
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) ||
@ -310,12 +310,6 @@ KiIdleLoop(VOID)
/* Switch away from the idle thread */
KiSwapContext(APC_LEVEL, OldThread);
/* We are back in the idle thread -- disable interrupts again */
_enable();
YieldProcessor();
YieldProcessor();
_disable();
}
else
{