PopCoolingTelemetryWorker
VOID __stdcall PopCoolingTelemetryWorker(){
_POP_COOLING_EXTENSION *i;
INT64 v1;
INT64 j;
PopAcquireRwLockExclusive(&PopCoolingExtensionLock);
for( i = PopCoolingExtensionList;
i != (_POP_COOLING_EXTENSION *)&PopCoolingExtensionList;
i = (_POP_COOLING_EXTENSION *)i->Link.Flink )
{
if( i->Enabled )
{
PopAcquireRwLockExclusive(&i->Lock);
for( j = (INT64)i->RequestListHead.Flink; (_LIST_ENTRY *)j != &i->RequestListHead; j = *(_QWORD *)j )
{
if( *(_BYTE *)(j + 18) )
{
if( i->Interface.PassiveCooling )
{
PopThermalUpdatePassiveTimeTracking((_POP_THERMAL_TELEMETRY_TRACKER *)(j + 40), *(_BYTE *)(j + 16));
PopTraceThermalRequestPassiveHistogram(j);
}
if( i->Interface.ActiveCooling )
{
LOBYTE(v1) = *(_BYTE *)(j + 17) == 0;
PopThermalUpdateActiveTimeTracking(j + 40, v1);
PopTraceThermalRequestActiveActivity(j);
}
}
}
PopReleaseRwLock((UINT64)&i->Lock);
}
}
PopReleaseRwLock((UINT64)&PopCoolingExtensionLock);
}Referenced by:
PopThermalTelemetryWorker