KiChargeSchedulingGroupCycleTime

UINT8 __stdcall KiChargeSchedulingGroupCycleTime(_KSCHEDULING_GROUP *SchedulingGroup, _KSCB *Scb){
  unsigned __int64 v2; 
  bool v3; 
  UINT64 v5; 

  v2 = Scb->LastReportedCycles - Scb->GenerationCycles;
  Scb->LastReportedCycles = Scb->GenerationCycles;
  v3 = (__int64)(v2 + _InterlockedExchangeAdd64(&SchedulingGroup->MaxQuotaCyclesRemaining, v2)) <= 0;
  if( SchedulingGroup->NotificationCycles > 0
    && (__int64)(v2 + _InterlockedExchangeAdd64(&SchedulingGroup->NotificationCycles, v2)) <= 0 )
  {
    v5 = _InterlockedExchange64((volatile __int64 *)&SchedulingGroup->NotificationDpc, 0i64);
    if( v5 )
      KeInsertQueueDpc(v5, 0i64, 0i64);
  }
  return v3;
}

Referenced by:

KiCheckMaxOverQuotaTransition
KiComputeGroupSchedulingRank
KiRecomputeGroupSchedulingRank
KiTransitionSchedulingGroupGeneration