Skip to content

Commit 8c30dc3

Browse files
committed
query: cpu: add cpu.temp
I'm sorry for being kinda absent. I was learning some kotlin cuz I'm really interested into making an app ;)
1 parent 97c83cc commit 8c30dc3

File tree

4 files changed

+43
-0
lines changed

4 files changed

+43
-0
lines changed

include/query.hpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -183,6 +183,7 @@ class CPU
183183
double freq_min = 0;
184184
double freq_cur = 0;
185185
double freq_bios_limit = 0;
186+
double temp = 0;
186187

187188
// private:
188189
double freq_max_cpuinfo = 0;
@@ -196,6 +197,7 @@ class CPU
196197
double& freq_min() noexcept;
197198
double& freq_cur() noexcept;
198199
double& freq_bios_limit() noexcept;
200+
double& temp() noexcept;
199201

200202
private:
201203
static bool m_bInit;

src/main.cpp

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -304,6 +304,7 @@ gpu
304304
305305
cpu
306306
name : CPU model name [AMD Ryzen 5 5500]
307+
temp : CPU temperature (Celsius) [40.62]
307308
nproc : CPU number of virtual proccessors [12]
308309
freq_bios_limit: CPU freq (limited by bios, in GHz) [4.32]
309310
freq_cur : CPU freq (current, in GHz) [3.42]

src/parse.cpp

Lines changed: 2 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1143,6 +1143,8 @@ void addValueFromModuleMember(const std::string& moduleName, const std::string&
11431143
case "freq_max"_fnv1a16: SYSINFO_INSERT(query_cpu.freq_max()); break;
11441144

11451145
case "freq_min"_fnv1a16: SYSINFO_INSERT(query_cpu.freq_min()); break;
1146+
1147+
case "temp"_fnv1a16: SYSINFO_INSERT(query_cpu.temp()); break;
11461148
}
11471149
}
11481150
}

src/query/unix/cpu.cpp

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -28,6 +28,7 @@
2828
#include <cstdlib>
2929
#include <filesystem>
3030
#include <fstream>
31+
#include <string>
3132

3233
#include "fmt/format.h"
3334
#include "query.hpp"
@@ -109,6 +110,33 @@ static CPU::CPU_t get_cpu_infos()
109110
return ret;
110111
}
111112

113+
static double get_cpu_temp()
114+
{
115+
for (const auto& dir : std::filesystem::directory_iterator{"/sys/class/hwmon/"})
116+
{
117+
const std::string& name = read_by_syspath((dir.path() / "name").string());
118+
debug("name = {}", name);
119+
// if only !continue
120+
if (name == "cpu" ||
121+
name == "k10temp" ||
122+
name == "coretemp"){}
123+
else
124+
continue;
125+
126+
const std::string& temp_file = std::filesystem::exists(dir.path() / "temp1_input") ? dir.path() / "temp1_input" :
127+
dir.path() / "device/temp1_input";
128+
if (!std::filesystem::exists(temp_file))
129+
continue;
130+
131+
const double ret = std::stod(read_by_syspath(temp_file));
132+
debug("cpu temp ret = {}", ret);
133+
134+
return ret / 1000.0;
135+
}
136+
137+
return 0.0;
138+
}
139+
112140
CPU::CPU() noexcept
113141
{
114142
if (!m_bInit)
@@ -135,3 +163,13 @@ double& CPU::freq_max() noexcept
135163

136164
double& CPU::freq_min() noexcept
137165
{ return m_cpu_infos.freq_min; }
166+
167+
double& CPU::temp() noexcept
168+
{
169+
static bool done = false;
170+
if (!done)
171+
m_cpu_infos.temp = get_cpu_temp();
172+
done = true;
173+
174+
return m_cpu_infos.temp;
175+
}

0 commit comments

Comments
 (0)