SMKM_STORE_MGR::SmCompressCtxBalancerThread
VOID *__fastcall SMKM_STORE_MGR::SmCompressCtxBalancerThread(PVOID P){
__int64 v1;
unsigned __int64 v3;
unsigned int v4;
unsigned __int64 v5;
v1 = *(_QWORD *)P;
KeSetActualBasePriorityThread(KeGetCurrentThread(), 25i64);
while( 1 )
{
KeWaitForSingleObject(v1 + 48, 26, 0, 0, 0i64);
v3 = (unsigned __int8)ExAcquireSpinLockExclusive((INT64 *)v1);
KeResetEvent((_KEVENT *)(v1 + 48));
v4 = *(_DWORD *)(v1 + 88);
if( !v4 )
break;
v5 = *(unsigned int *)(v1 + 92);
if( v4 <= (unsigned int)v5 || **(_QWORD **)(v1 + 16) >> 1 <= v5 )
{
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v1);
__writecr8(v3);
}
else
{
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v1);
__writecr8(v3);
SMKM_STORE_MGR::SmCompressCtxCreateThread(v1, *((_QWORD *)P + 1), 1);
}
}
ExReleaseSpinLockExclusiveFromDpcLevel((INT64 *)v1);
__writecr8(v3);
return SMKM_STORE_MGR::SmCompressContextDeleteThreadParams(P);
}
Referenced by:
No references.