Use k10-temp power sensors if exist

pull/1080/head
Bouke Haarsma 10 months ago committed by flightlessmango
parent 5d93e484ce
commit f1a6753796

@ -296,9 +296,23 @@ bool CPUStats::UpdateCpuTemp() {
static bool get_cpu_power_k10temp(CPUPowerData* cpuPowerData, float& power) {
CPUPowerData_k10temp* powerData_k10temp = (CPUPowerData_k10temp*)cpuPowerData;
if(powerData_k10temp->corePowerFile || powerData_k10temp->socPowerFile)
{
rewind(powerData_k10temp->corePowerFile);
rewind(powerData_k10temp->socPowerFile);
fflush(powerData_k10temp->corePowerFile);
fflush(powerData_k10temp->socPowerFile);
int corePower, socPower;
if (fscanf(powerData_k10temp->corePowerFile, "%d", &corePower) != 1)
goto voltagebased;
if (fscanf(powerData_k10temp->socPowerFile, "%d", &socPower) != 1)
goto voltagebased;
power = (corePower + socPower) / 1000000;
return true;
}
voltagebased:
if (!powerData_k10temp->coreVoltageFile || !powerData_k10temp->coreCurrentFile || !powerData_k10temp->socVoltageFile || !powerData_k10temp->socCurrentFile)
return false;
rewind(powerData_k10temp->coreVoltageFile);
rewind(powerData_k10temp->coreCurrentFile);
rewind(powerData_k10temp->socVoltageFile);

@ -72,12 +72,18 @@ struct CPUPowerData_k10temp : public CPUPowerData {
fclose(this->socVoltageFile);
if(this->socCurrentFile)
fclose(this->socCurrentFile);
if(this->corePowerFile)
fclose(this->corePowerFile);
if(this->socPowerFile)
fclose(this->socPowerFile);
};
FILE* coreVoltageFile {nullptr};
FILE* coreCurrentFile {nullptr};
FILE* socVoltageFile {nullptr};
FILE* socCurrentFile {nullptr};
FILE* corePowerFile {nullptr};
FILE* socPowerFile {nullptr};
};
struct CPUPowerData_zenpower : public CPUPowerData {

Loading…
Cancel
Save