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.