KeShouldYieldProcessor
UINT64 __stdcall KeShouldYieldProcessor(){
struct _KPRCB *CurrentPrcb;
unsigned int v1;
volatile int DpcRequestSummary;
int v3;
_ETHREAD *NextThread;
CurrentPrcb = KeGetCurrentPrcb();
v1 = 0;
DpcRequestSummary = CurrentPrcb->DpcRequestSummary;
if( (DpcRequestSummary & 1) != 0 )
{
v3 = 1;
if( CurrentPrcb->DpcTimeCount > 7 )
{
if( CurrentPrcb->QuantumEnd )
goto LABEL_8;
goto LABEL_16;
}
LABEL_5:
if( CurrentPrcb->DpcWatchdogCount <= 7u )
return 0i64;
if( !v3 )
{
LABEL_13:
_disable();
CurrentPrcb->DpcWatchdogCount = 0;
CurrentPrcb->DpcTimeCount = 0;
KiResetGlobalDpcWatchdogProfiler((INT64)CurrentPrcb);
_enable();
v3 = 0;
goto LABEL_8;
}
LABEL_16:
if( (DpcRequestSummary & 0x1E) != 0 )
{
v3 = 5;
goto LABEL_8;
}
if( CurrentPrcb->CurrentThread != CurrentPrcb->IdleThread )
{
v3 = 6;
goto LABEL_8;
}
goto LABEL_13;
}
v3 = 0;
if( (DpcRequestSummary & 0x1E) != 0 )
{
v3 = 2;
}
else
{
if( !CurrentPrcb->QuantumEnd )
{
NextThread = CurrentPrcb->NextThread;
if( NextThread && NextThread != CurrentPrcb->CurrentThread )
{
v3 = 4;
goto LABEL_8;
}
goto LABEL_5;
}
v3 = 3;
}
LABEL_8:
LOBYTE(v1) = v3 != 0;
return v1;
}Referenced by:
MiAddPagesToEnclave
MiArePageContentsZero
MiCloneVads
MiCommitEnclavePages
MiCommitPoolMemory
MiConvertEntireLargePageToSmall
MiConvertSmallPageRangeToLarge
MiDecommitHardwareEnclavePages
MiDecrementLargeSubsections
MiDeleteSystemPagableVm
MiDispatchFault
MiDoGangAssignment
MiEnableLargeSubsection
MiFillPoolCommitPageTable
MiFreePhysicalPages
MiGetPageChain
MiGetWorkingSetInfoList
MiInitializeLargeMdlLeafPfns
MiInitializeMdlPages
MiInsertViewOfPhysicalSection
MiMakeVaRangePhysicallyContiguous
MiMapLockedPagesInUserSpaceHelper
MiMoveDirtyBitsToPfns
MiPreparePhysicalPagesMdlForFree
MiProbePacketContended
MiProtectEnclavePages
MiProtectPrivateMemory
MiQueryAddressSpan
MiQueryVaPhysicalContiguity
MiRemoveMappedPtes
MiReplaceRotateWithDemandZero
MiScrubLargeMappedPage
MiSetGraphicsPtes
MiSetProtectionOnSection
MiSharePages
MiShouldYieldProcessor
MiSoftFaultMappedView
MiTransferPartitionPageRun
MiUnlinkBadPages
MiUnlinkNodeLargePages
MiWalkVaRange
MiWriteAwePtes
MmPurgeSection
MmUnlockPages