summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorJos Dehaes <jos.dehaes@gmail.com>2021-10-03 22:08:21 +0200
committerJos Dehaes <jos.dehaes@gmail.com>2021-10-03 22:08:21 +0200
commit53e379d74dffe2282b089450728501b51d13d199 (patch)
tree11fce5c6a246656524b714f0b30c6e062b072801
parent2a44b307ef9e947c1007a86988876668a5731e64 (diff)
cpu freq, name & process uid/name
-rw-r--r--src/osx/btop_collect.cpp32
1 files changed, 21 insertions, 11 deletions
diff --git a/src/osx/btop_collect.cpp b/src/osx/btop_collect.cpp
index 8fb601b..addafa6 100644
--- a/src/osx/btop_collect.cpp
+++ b/src/osx/btop_collect.cpp
@@ -30,6 +30,7 @@ tab-size = 4
#include <sys/types.h>
#include <sys/sysctl.h>
#include <libproc.h>
+#include <pwd.h>
#include <btop_shared.hpp>
#include <btop_config.hpp>
@@ -127,6 +128,8 @@ namespace Shared
Logger::warning("Could not get memory size");
}
totalMem = memsize;
+
+ Cpu::cpuName = Cpu::get_cpuName();
}
}
@@ -156,9 +159,14 @@ namespace Cpu
string get_cpuName()
{
- string name("11th Gen Intel(R) Core(TM) i5-11600 @ 2.80GHz");
-
- return name;
+ char buffer[1024];
+ size_t size = sizeof(buffer);
+ if (sysctlbyname("machdep.cpu.brand_string", &buffer, &size, NULL, 0) < 0)
+ {
+ Logger::error("Failed to get CPU name");
+ return "";
+ }
+ return string(buffer);
}
bool get_sensors()
@@ -207,12 +215,11 @@ namespace Cpu
size_t size = sizeof(freq);
return "1.0";
- // if (sysctlbyname("hw.cpufrequency", &freq, &size, NULL, 0) < 0)
- // {
- // perror("sysctl");
- // }
- // Logger::debug("cpufreq:" + freq);
- // return "" + freq;
+ if (sysctlbyname("hw.cpufrequency", &freq, &size, NULL, 0) < 0)
+ {
+ Logger::error("Failed to get CPU frequency");
+ }
+ return "" + freq;
}
auto get_core_mapping() -> unordered_flat_map<int, int>
@@ -458,6 +465,8 @@ namespace Proc
p.cpu_p = 0;
p.cpu_s = pti.pti_total_system;
}
+ struct passwd *pwd = getpwuid(kproc.kp_eproc.e_ucred.cr_uid);
+ p.user = pwd->pw_name;
procs->push_back(p);
}
}
@@ -470,12 +479,13 @@ namespace Tools
{
double system_uptime()
{
- struct timeval ts;
+ struct timeval ts, currTime;
std::size_t len = sizeof(ts);
int mib[2] = {CTL_KERN, KERN_BOOTTIME};
if (sysctl(mib, 2, &ts, &len, NULL, 0) != -1)
{
- return ts.tv_sec;
+ gettimeofday(&currTime, NULL);
+ return currTime.tv_sec - ts.tv_sec;
}
return 0.0;
}