MiNodeLargeFreeZeroPages
NTSTATUS __stdcall MiNodeLargeFreeZeroPages(_MI_NODE_INFORMATION *NodeInformation, UINT64 Channel, _MMLISTS PageList){
NTSTATUS v3;
__int64 v4;
__int64 *v5;
__int64 v7;
_MI_NODE_INFORMATION *v8;
__int64 v9;
__int64 v10;
unsigned __int64 v11;
__int64 v12;
unsigned __int64 v13;
v3 = 0;
v4 = PageList;
v5 = MiLargePageSizes;
v7 = 0i64;
v8 = NodeInformation;
v9 = PageList;
v10 = 3i64;
do
{
if( (_DWORD)Channel == 4 )
{
v9 = v4;
if( (_DWORD)v4 == 2 )
v11 = v8->FreeLargePages[0].LargePageFreeCount[0] + v8->FreeLargePages[0].LargePageFreeCount[1];
else
v11 = NodeInformation->FreeLargePages[v7].LargePageFreeCount[v4];
}
else
{
v12 = v7 * 134 + 4 * ((unsigned int)Channel + 4 * v9);
v11 = NodeInformation->FreeLargePages[0].LargePagesCount[0][0][0][v12]
+ NodeInformation->FreeLargePages[0].LargePagesCount[0][0][0][v12 + 1]
+ NodeInformation->FreeLargePages[0].LargePagesCount[0][0][0][v12 + 3]
+ NodeInformation->FreeLargePages[0].LargePagesCount[1][0][0][v12]
+ NodeInformation->FreeLargePages[0].LargePagesCount[1][0][0][v12 + 1]
+ NodeInformation->FreeLargePages[0].LargePagesCount[1][0][0][v12 + 3]
+ NodeInformation->FreeLargePages[0].LargePagesCount[0][0][0][v12 + 2]
+ NodeInformation->FreeLargePages[0].LargePagesCount[1][0][0][v12 + 2];
}
v13 = v11 * *v5++;
v8 = (_MI_NODE_INFORMATION *)((char *)v8 + 1072);
v3 += v13;
++v7;
--v10;
}
while( v10 );
return v3;
}Referenced by:
MiCheckZeroFreeRebalance
MiInsertPageInFreeOrZeroedList
MiNodeFreeZeroPages
MiRebuildLargePages
MiSignalLargePageRebuild
MiWakePageZeroing