PpmHeteroRestrictToFavoredClass
UINT64 __stdcall PpmHeteroRestrictToFavoredClass(UINT64 Candidates){
unsigned __int16 v1;
unsigned __int8 v2;
int v3;
UINT64 v4;
unsigned __int64 v5;
unsigned __int64 i;
unsigned __int64 v7;
_KPRCB *Prcb;
unsigned __int8 PerformanceSchedulingClass;
unsigned __int64 v10;
_KPRCB *v11;
unsigned __int64 GroupSetMember;
v2 = 0;
v3 = v1;
v4 = 0i64;
v5 = Candidates;
for( i = Candidates; i; i &= ~Prcb->GroupSetMember )
{
_BitScanForward64(&v7, i);
Prcb = KeGetPrcb((unsigned int)KiProcessorNumberToIndexMappingTable[64 * v3 + (v7 & 0x3F)]);
PerformanceSchedulingClass = v2;
if( v2 <= Prcb->PowerState.PerformanceSchedulingClass )
PerformanceSchedulingClass = Prcb->PowerState.PerformanceSchedulingClass;
v2 = PerformanceSchedulingClass;
}
for( ; v5; v5 &= ~GroupSetMember )
{
_BitScanForward64(&v10, v5);
v11 = KeGetPrcb((unsigned int)KiProcessorNumberToIndexMappingTable[64 * v3 + (v10 & 0x3F)]);
GroupSetMember = v11->GroupSetMember;
if( v11->PowerState.PerformanceSchedulingClass == v2 )
v4 |= GroupSetMember;
}
return v4;
}Referenced by:
PpmParkComputeUnparkMask