KiUpdateThreadCpuSets
_KPRCB *__stdcall KiUpdateThreadCpuSets(_ETHREAD *Thread, _SINGLE_LIST_ENTRY *ReadyList){
__int32 bf_0;
_KPRCB *v3;
UINT8 v6;
UINT8 v7;
int v8;
int v9;
_KPRCB *v10;
_KPRCB *Prcb;
_KSHARED_READY_QUEUE *SharedReadyQueue;
bf_0 = Thread->Tcb._bf_0;
v3 = 0i64;
SharedReadyQueue = 0i64;
Prcb = 0i64;
if( (bf_0 & 8) == 0 )
{
KiAcquireThreadStateLock(Thread, &Prcb, &SharedReadyQueue);
v7 = v6;
KiComputeThreadAffinity(&Thread->Tcb);
KiRescheduleThreadAfterAffinityChange(Thread, &Thread->Tcb.Affinity, v7, Prcb, SharedReadyQueue, ReadyList);
v9 = v8;
KiReleaseThreadStateLock(v10, (_KSHARED_READY_QUEUE *)Prcb);
return(_KPRCB *)((unsigned __int64)Prcb & -(__int64)(v9 != 0));
}
return v3;
}Referenced by:
KeSetSelectedCpuSetsThread
KiUpdateThreadCpuSetAffinitiesFromDpcLevel