KiConfigureCpuSetSchedulingInformation

VOID __stdcall KiConfigureCpuSetSchedulingInformation(_KPRCB *Prcb){
  unsigned __int8 CurrentIrql; 
  unsigned __int64 *CacheProcessorMask; 
  unsigned __int8 *v4; 
  unsigned __int64 v5; 
  unsigned __int64 v6; 
  __int64 v7; 
  unsigned __int64 v8; 
  unsigned __int64 v9; 

  CurrentIrql = KeGetCurrentIrql();
  __writecr8(2ui64);
  KxAcquireSpinLock(&KiCpuSetLock);
  RtlWriteAcquireTickLock(&KiCpuSetSequence);
  CacheProcessorMask = Prcb->CacheProcessorMask;
  v4 = (unsigned __int8 *)(KiCpuSetData + 16 * (Prcb->GroupIndex + ((unsigned __int64)Prcb->Group << 6)));
  *v4 = Prcb->Group;
  v4[1] = Prcb->GroupIndex;
  _BitScanForward64(&v5, Prcb->CoreProcessorSet);
  v4[2] = v5;
  v6 = 0i64;
  v7 = 5i64;
  do
  {
    v8 = *CacheProcessorMask++;
    if( !v8 )
      v8 = v6;
    v6 = v8;
    --v7;
  }
  while( v7 );
  if( v8 )
  {
    _BitScanForward64(&v8, v8);
    v4[3] = v8;
  }
  _BitScanForward64(&v9, Prcb->ParentNode->Affinity.Mask);
  v4[4] = v9;
  v4[5] = Prcb->PowerState.ArchitecturalEfficiencyClass;
  v4[6] = Prcb->PowerState.PerformanceSchedulingClass;
  ++KiCpuSetSequence;
  KxReleaseSpinLock(&KiCpuSetLock);
  __writecr8(CurrentIrql);
}

Referenced by:

KeConfigureHeteroProcessors
KiConfigureSchedulingInformation