KiReduceByEffectiveIdleSmtSet

UINT8 __stdcall KiReduceByEffectiveIdleSmtSet(_KPRCB *CurrentPrcb, UINT64 *IdleCandidateSet){
  unsigned __int64 v3; 
  _ETHREAD *CurrentThread; 
  unsigned int CurrentRunTime; 
  unsigned int ExpectedRunTime; 

  v3 = CurrentPrcb->CoreProcessorSet & ~CurrentPrcb->GroupSetMember;
  if( (v3 & *IdleCandidateSet) == 0
    || (CurrentPrcb->ParentNode->IdleCpuSet & v3 & *IdleCandidateSet) != v3
    || (CurrentPrcb->DpcRequestSummary & 1) != 0
    || CurrentPrcb->ReadySummary )
  {
    return 0;
  }
  CurrentThread = CurrentPrcb->CurrentThread;
  if( !CurrentPrcb->NestingLevel )
  {
    _disable();
    KiUpdateTotalCyclesCurrentThread(CurrentPrcb, &CurrentPrcb->CurrentThread->Tcb, 0i64);
    _enable();
  }
  CurrentRunTime = CurrentThread->Tcb.CurrentRunTime;
  ExpectedRunTime = CurrentThread->Tcb.ExpectedRunTime;
  if( CurrentRunTime < ExpectedRunTime && ExpectedRunTime - CurrentRunTime >= KiShortExecutionCycles )
    return 0;
  *IdleCandidateSet &= v3;
  return 1;
}

Referenced by:

KiChooseTargetProcessor
KiSelectIdleProcessor
KiTryLocalThreadSchedule