PpmIdleSnapConcurrencyIdleTime
VOID __stdcall PpmIdleSnapConcurrencyIdleTime(
_PPM_CONCURRENCY_ACCOUNTING *Concurrency,
UINT64 *TotalTime,
UINT64 *IdleTime){
unsigned __int64 PerformanceCounter;
unsigned __int64 LastUpdateTime;
unsigned __int64 v8;
__int64 ActiveProcessors;
__int16 v10;
PerformanceCounter = KeQueryPerformanceCounter(0i64);
_disable();
KxAcquireSpinLock(&Concurrency->Lock);
LastUpdateTime = Concurrency->LastUpdateTime;
if( PerformanceCounter > LastUpdateTime )
{
Concurrency->LastUpdateTime = PerformanceCounter;
v8 = PerformanceCounter - LastUpdateTime;
ActiveProcessors = Concurrency->ActiveProcessors;
Concurrency->TotalTime += v8;
Concurrency->AccumulatedTime[ActiveProcessors] += v8;
}
*TotalTime = Concurrency->TotalTime;
*IdleTime = Concurrency->AccumulatedTime[0];
KxReleaseSpinLock(&Concurrency->Lock);
if( (v10 & 0x200) != 0 )
_enable();
}Referenced by:
PpmParkSnapNodeIdleTime