KeUpdateGroupSchedulingConstants
VOID __stdcall KeUpdateGroupSchedulingConstants(INT64 a1, CHAR a2){
char v2;
unsigned __int64 v3;
_KLOCK_QUEUE_HANDLE LockHandle;
v2 = a1;
memset(&LockHandle, 0, sizeof(LockHandle));
if( !(_BYTE)a1 )
KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&KiSchedulingGroupLock, &LockHandle);
v3 = 1000000 * (unsigned __int64)KiProcessorBlock->MHz / 0x3E8;
KiCycleDivisorShortTerm = v3 * (unsigned int)PsDfssShortTermSharingMS;
KiCycleDivisorLongTerm = v3 * (unsigned int)PsDfssLongTermSharingMS;
KiCyclesPerGeneration = v3 * (unsigned int)PsDfssGenerationLengthMS;
KiGroupSchedulingNumerator = PsDfssLongTermFraction1024;
KiGenerationTicks = 10000
* (unsigned __int64)(unsigned int)PsDfssGenerationLengthMS
/ (unsigned int)KeMaximumIncrement;
KiAssignSchedulingGroupWeights(WeightBased, 1u, 0i64);
if( !v2 )
{
KeReleaseInStackQueuedSpinLockFromDpcLevel(&LockHandle);
__writecr8(LockHandle.OldIrql);
}
}Referenced by:
KiEnableGroupScheduling
PspReadDfssConfigurationValues