KiAddProcessorToGroupSchedulingDatabase

VOID __stdcall KiAddProcessorToGroupSchedulingDatabase(INT64 a1){
  __int64 v2; 
  unsigned int v3; 
  _KLOCK_QUEUE_HANDLE LockHandle; 
  UINT64 SpinCount; 

  memset(&LockHandle, 0, sizeof(LockHandle));
  KiInitializeProcessorGroupSchedulingData(a1);
  v3 = *(_DWORD *)(v2 + 36);
  KeAcquireInStackQueuedSpinLock((PKSPIN_LOCK)&KiSchedulingGroupLock, &LockHandle);
  if( KiGroupSchedulingEnabled )
  {
    LODWORD(SpinCount) = 0;
    while( _interlockedbittestandset64((volatile signed __int32 *)(a1 + 48), 0i64) )
    {
      do
        KeYieldProcessorEx(&SpinCount);
      while( *(_QWORD *)(a1 + 48) );
    }
    KiAddProcessorToGroupSchedulingList(a1, (_QWORD **)&KiSchedulingGroupList, v3);
    _InterlockedAnd64((volatile signed __int64 *)(a1 + 48), 0i64);
  }
  KeReleaseInStackQueuedSpinLock(&LockHandle);
}

Referenced by:

KiStartDynamicProcessor