PpmParkReportParkedCores
INT64 __fastcall PpmParkReportParkedCores(){
INT64 v0;
int v1;
int v2;
int v3;
INT64 v4;
INT64 v5;
UINT64 ProcessorNumber;
_KAFFINITY_EX *p_result;
unsigned __int64 v8;
__int16 v9;
int v10;
__int16 v11;
_KAFFINITY_EX v12;
_KAFFINITY_EX result;
INT64 v14[22];
v10 = 0;
v11 = 0;
LODWORD(ProcessorNumber) = 0;
memset((INT64)&result, 0i64);
memset((INT64)v14, 0i64);
v0 = memset((INT64)&v12, 0i64);
if( PpmIsParkingEnabled
&& (v1 = KeAndAffinityEx((_KAFFINITY_EX *)&PpmPerfChangedCoreParkingMask, &PpmPerfNewCoreParkingMask, &result),
KeSubtractAffinityEx(
&PpmPerfNewCoreParkingMask,
(_KAFFINITY_EX *)&PpmPerfChangedCoreParkingMask,
(_KAFFINITY_EX *)v14),
KeXorAffinityEx(&PpmParkSoftParkingMask, &PpmParkNewSoftParkingMask, &v12.Count),
v0 = v1 | (unsigned int)KeAndAffinityEx(&v12, (_KAFFINITY_EX *)v14, &v12),
(_DWORD)v0) )
{
v2 = KeCountSetBitsAffinityEx(&v12);
v3 = KeCountSetBitsAffinityEx(&result);
v9 = 0;
v8 = result.Bitmap[0];
p_result = &result;
PpmCheckCount = v3 + v2;
while( !(unsigned int)KeEnumerateNextProcessor(&ProcessorNumber, (unsigned __int16 **)&p_result) )
{
KeGetPrcb((unsigned int)ProcessorNumber);
PpmPerfQueueAction(v4, 3);
}
v8 = v12.Bitmap[0];
p_result = &v12;
v9 = 0;
while( 1 )
{
v0 = KeEnumerateNextProcessor(&ProcessorNumber, (unsigned __int16 **)&p_result);
if( (_DWORD)v0 )
break;
KeGetPrcb((unsigned int)ProcessorNumber);
PpmPerfQueueAction(v5, 4);
}
LOBYTE(v0) = 0;
}
else
{
LOBYTE(v0) = 1;
}
return v0;
}Referenced by:
No references.