PopDeepSleepEvaluateCallback
VOID __stdcall PopDeepSleepEvaluateCallback(PVOID Context){
UINT64 v1;
unsigned __int8 v2;
UINT64 v3;
unsigned __int8 v4;
bool v5;
UINT64 v6;
KeAcquireSpinLockRaiseToDpc(&PopDeepSleepDisengageReasonLock, v1);
while( 1 )
{
v4 = v2;
LOBYTE(v3) = -PopDeepSleepEnforced;
v5 = (_DWORD)PopDeepSleepDisengageReasonMask == 0;
if( PopDeepSleepIsEngaged == ((_DWORD)PopDeepSleepDisengageReasonMask == 0) )
break;
if( (_DWORD)PopDeepSleepDisengageReasonMask )
PopDiagTraceIdleResiliencyEnd(v3);
else
PopDiagTraceIdleResiliencyStart(v3, (unsigned int)(PopDeepSleepEnforced != 0) + 2);
PopDeepSleepIsEngaged = v5;
KxReleaseSpinLock(&PopDeepSleepDisengageReasonLock);
__writecr8(v4);
PpmAcquireLock(&PopFxSystemLatencyLock);
PoFxSendSystemLatencyUpdate();
PpmReleaseLock(&PopFxSystemLatencyLock);
KeAcquireSpinLockRaiseToDpc(&PopDeepSleepDisengageReasonLock, v6);
}
PopDeepSleepEvaluateWorkItemQueued = 0;
KxReleaseSpinLock(&PopDeepSleepDisengageReasonLock);
__writecr8(v4);
}Referenced by:
No references.