NetBSD-Users archive
[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index][Old Index]
Re: 11 beta testing
On Mon, 6 Oct 2025, Van Ly wrote:
sysutils/btop cpu temperature reading doesn't refresh down, the reading went up to 89degC while building chromium and hasn't changed.
Hmm. This looks like a btop bug. It only looks at the first sensor (and, that
too not very well), and doesn't match the core temps to the CPUs.
And, on my HW, `acpitz0' is always at 27.800 C even on Linux. Can you try this
patch:
```
diff -urN btop-1.4.5.orig/src/netbsd/btop_collect.cpp btop-1.4.5/src/netbsd/btop_collect.cpp
--- btop-1.4.5.orig/src/netbsd/btop_collect.cpp 2025-09-19 20:29:22.000000000 +0000
+++ btop-1.4.5/src/netbsd/btop_collect.cpp 2025-10-09 00:03:45.503572033 +0000
@@ -52,6 +52,7 @@
#include <kvm.h>
#include <paths.h>
#include <fcntl.h>
+#include <regex.h>
#include <unistd.h>
#include <uvm/uvm_extern.h>
@@ -220,10 +221,10 @@
prop_object_t fields_array;
// List of common thermal sensors in NetBSD.
const string sensors[6] = {
- "acpitz0",
- "acpitz1",
"coretemp0",
"coretemp1",
+ "acpitz0",
+ "acpitz1",
"thinkpad0",
"amdzentemp0"
};
@@ -319,6 +320,12 @@
return;
}
+ regex_t r;
+ if (regcomp(&r, "(cpu[0-9]* )*temperature", REG_EXTENDED)) {
+ Logger::warning("regcomp() failed");
+ return;
+ }
+
string prop_description = "no description";
while ((fields = (prop_dictionary_t) prop_object_iterator_next(prop_object_iterator_t(fields_iter))) != NULL) {
props = (prop_dictionary_t) prop_dictionary_get(fields, "device-properties");
@@ -335,13 +342,15 @@
prop_description = prop_string_cstring(prop_string_t(description));
- if (prop_description == "temperature") {
+ // if (prop_description == "temperature") {
+ if (regexec(&r, prop_description.c_str(), 0, NULL, 0) == 0) {
current_temp = prop_number_integer_value(prop_number_t(cur_value));
if (max_value != NULL) {
current_cpu.temp_max = MUKTOC(prop_number_integer_value(prop_number_t(max_value)));
}
}
}
+ regfree(&r);
prop_object_iterator_release(fields_iter);
prop_object_release(dict);
```
It sort-of works for me, even though it's not fully correct (uses `coretemp0'
values for _all_ CPUs).
-RVP
Home |
Main Index |
Thread Index |
Old Index