EtwpAdjustTraceBuffers
VOID __stdcall EtwpAdjustTraceBuffers(PVOID Context){
_EJOB *v1;
_EJOB *NextSilo;
_EJOB *v3;
_ETHREAD *CurrentThread;
__int64 v5;
__int64 v6;
PSLIST_ENTRY v7;
PSLIST_ENTRY v8;
if( EtwpHostSiloState && !*(_DWORD *)(EtwpHostSiloState + 4068) )
{
EtwpAdjustSiloTraceBuffers(EtwpHostSiloState);
v1 = 0i64;
while( 1 )
{
NextSilo = PspGetNextSilo(v1, 1u);
v3 = NextSilo;
if( !NextSilo )
break;
CurrentThread = (_ETHREAD *)KeGetCurrentThread();
v5 = *((_QWORD *)CurrentThread + 193);
*((_QWORD *)CurrentThread + 193) = NextSilo;
v6 = PsGetCurrentServerSiloGlobals()[108];
if( v6 && !*(_DWORD *)(v6 + 4068) )
EtwpAdjustSiloTraceBuffers(v6);
v1 = v3;
*((_QWORD *)KeGetCurrentThread() + 193) = v5;
}
if( dword_140C53AA4 > 2 * (int)KeNumberProcessors_0 * dword_140C53AA0 )
{
do
{
v7 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)&EtwpStackLookAsideList);
if( !v7 )
break;
ExFreePoolWithTag(v7, 0);
}
while( _InterlockedDecrement(&dword_140C53AA4) > 2 * (int)KeNumberProcessors_0 * dword_140C53AA0 );
}
if( dword_140C53AC4 > 2 * (int)KeNumberProcessors_0 * dword_140C53AC0 )
{
do
{
v8 = RtlpInterlockedPopEntrySList((PSLIST_HEADER)&EtwpLastBranchLookAsideList);
if( !v8 )
break;
ExFreePoolWithTag(v8, 0);
}
while( _InterlockedDecrement(&dword_140C53AC4) > 2 * (int)KeNumberProcessors_0 * dword_140C53AC0 );
}
_InterlockedExchange(&EtwpBufferAdjustmentActive, 0);
}
}Referenced by:
No references.