KiComputeCpuSetAffinityMask
UINT64 __stdcall KiComputeCpuSetAffinityMask(UINT64 *CachedAffinity, UINT64 *AffinityEpoch, UINT64 CpuSets){
unsigned __int64 v3;
unsigned __int64 v4;
int v5;
__int64 TickLock;
UINT64 *v8;
UINT64 v9;
unsigned __int64 i;
unsigned __int64 v11;
v4 = v3;
v5 = CpuSets;
do
{
TickLock = RtlBeginReadTickLock(&KiCpuSetSequence);
if( v8 && *AffinityEpoch == TickLock )
return *v8;
v9 = 0i64;
for( i = v4; i; i &= ~(1i64 << v11) )
{
_BitScanForward64(&v11, i);
v9 |= *((_QWORD *)KiCpuSetAffinities + (unsigned int)((v5 << 6) + v11));
}
}
while( KiCpuSetSequence != TickLock );
*AffinityEpoch = TickLock;
if( v8 )
*v8 = v9;
return v9;
}Referenced by:
KiIntSteerComputeCpuSet