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