PpmParkUnblockIdle
UINT8 __stdcall PpmParkUnblockIdle(){
UINT8 v0;
int v2;
_KPRCB *Prcb;
NTSTATUS v4;
int v5;
_KPRCB *v6;
_KAFFINITY_ENUMERATION_CONTEXT Context;
UINT64 ProcIndex;
*(_DWORD *)(&Context.CurrentIndex + 1) = 0;
*(&Context.CurrentIndex + 3) = 0;
v0 = 1;
LODWORD(ProcIndex) = 0;
if( PpmIsParkingEnabled )
{
Context.CurrentMask = PpmPerfNewUnparkedMask.Bitmap[0];
Context.Affinity = &PpmPerfNewUnparkedMask;
Context.CurrentIndex = 0;
while( 1 )
{
KeEnumerateNextProcessor(&ProcIndex, &Context);
if( v2 )
break;
Prcb = KeGetPrcb((unsigned int)ProcIndex);
if( Prcb->PowerState.IdlePolicy.ForceLightIdle )
Prcb->PowerState.IdlePolicy.ForceLightIdle = 0;
else
KeRemoveProcessorAffinityEx(&PpmPerfNewUnparkedMask.Count, (unsigned int)ProcIndex);
}
v4 = KeCountSetBitsAffinityEx(&PpmPerfNewUnparkedMask.Count);
if( v4 )
{
*(&PopIrpWorkerControlEvent + 316) = v4;
Context.CurrentMask = PpmPerfNewUnparkedMask.Bitmap[0];
Context.CurrentIndex = 0;
Context.Affinity = &PpmPerfNewUnparkedMask;
while( 1 )
{
KeEnumerateNextProcessor(&ProcIndex, &Context);
if( v5 )
break;
v6 = KeGetPrcb((unsigned int)ProcIndex);
PpmPerfQueueAction(v6, PpmPerfActionMax);
}
*(_DWORD *)&PpmPerfNewUnparkedMask.Count = 1310721;
memset(&PpmPerfNewUnparkedMask.Reserved, 0i64, 0xA4u);
return 0;
}
}
return v0;
}Referenced by:
No references.