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