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