summaryrefslogtreecommitdiffstats
path: root/src
diff options
context:
space:
mode:
authorRobert Griebl <[email protected]>2025-02-26 17:51:12 +0100
committerRobert Griebl <[email protected]>2025-06-06 10:53:29 +0000
commit94f897a80d30aa614d64fd8f0a8ae7e01a182829 (patch)
tree8a989d524141051d0ab0a2926d25c99157f40d6c /src
parentccd4c54292c37fd7b628a88cb8aea0754d74d0b8 (diff)
macOS cleanup: handle all sysctl calls the same way consistentlyHEADdev
Change-Id: I0bd8ca5145cd82e912e0e2971ea304bd0bc4b521 Pick-to: 6.10 Reviewed-by: Bernd Weimer <[email protected]>
Diffstat (limited to 'src')
-rw-r--r--src/common-lib/utilities.cpp14
-rw-r--r--src/monitor-lib/processreader.cpp4
-rw-r--r--src/monitor-lib/systemreader.cpp10
-rw-r--r--src/shared-main-lib/startuptimer.cpp44
4 files changed, 31 insertions, 41 deletions
diff --git a/src/common-lib/utilities.cpp b/src/common-lib/utilities.cpp
index 78c9f50b..7f80f15f 100644
--- a/src/common-lib/utilities.cpp
+++ b/src/common-lib/utilities.cpp
@@ -138,16 +138,12 @@ qint64 getParentPid(qint64 pid)
}
#elif defined(Q_OS_MACOS) || defined(Q_OS_IOS)
- int mibNames[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, (pid_t) pid };
- size_t procInfoSize;
-
- if (sysctl(mibNames, sizeof(mibNames) / sizeof(mibNames[0]), nullptr, &procInfoSize, nullptr, 0) == 0) {
- kinfo_proc *procInfo = (kinfo_proc *) malloc(procInfoSize);
+ std::array<int, 4> mib { CTL_KERN, KERN_PROC, KERN_PROC_PID, (pid_t) pid };
+ kinfo_proc procInfo;
+ size_t procInfoSize = sizeof(procInfo);
- if (sysctl(mibNames, sizeof(mibNames) / sizeof(mibNames[0]), procInfo, &procInfoSize, nullptr, 0) == 0)
- ppid = procInfo->kp_eproc.e_ppid;
- free(procInfo);
- }
+ if (sysctl(mib.data(), mib.size(), &procInfo, &procInfoSize, nullptr, 0) == 0)
+ ppid = procInfo.kp_eproc.e_ppid;
#elif defined(Q_OS_WIN)
PROCESSENTRY32 pe32;
diff --git a/src/monitor-lib/processreader.cpp b/src/monitor-lib/processreader.cpp
index 4c9c6f08..3fe10d72 100644
--- a/src/monitor-lib/processreader.cpp
+++ b/src/monitor-lib/processreader.cpp
@@ -287,8 +287,8 @@ bool ProcessReader::readMemory(Memory &mem)
struct task_basic_info t_info;
mach_msg_type_number_t t_info_count = TASK_BASIC_INFO_COUNT;
- if (KERN_SUCCESS != task_info(mach_task_self(), TASK_BASIC_INFO,
- reinterpret_cast<task_info_t>(&t_info), &t_info_count)) {
+ if (task_info(mach_task_self(), TASK_BASIC_INFO,
+ reinterpret_cast<task_info_t>(&t_info), &t_info_count) != 0) {
qCWarning(LogSystem) << "Could not read memory data";
return false;
}
diff --git a/src/monitor-lib/systemreader.cpp b/src/monitor-lib/systemreader.cpp
index c0ecedf1..6d8ed647 100644
--- a/src/monitor-lib/systemreader.cpp
+++ b/src/monitor-lib/systemreader.cpp
@@ -657,7 +657,7 @@ qreal CpuReader::readLoadValue()
if (host_processor_info(mach_host_self(), PROCESSOR_CPU_LOAD_INFO, &cpuCount,
reinterpret_cast<processor_info_array_t *>(&cpuLoadInfo),
- &cpuLoadInfoCount) == KERN_SUCCESS) {
+ &cpuLoadInfoCount) == 0) {
qint64 idle = 0, total = 0;
for (natural_t i = 0; i < cpuCount; ++i) {
@@ -685,18 +685,18 @@ int MemoryReader::s_pageSize = 0;
MemoryReader::MemoryReader()
{
if (!s_totalValue) {
- int mib[2] = { CTL_HW, HW_MEMSIZE };
+ std::array<int, 2> mib { CTL_HW, HW_MEMSIZE };
int64_t hwMem;
size_t hwMemSize = sizeof(hwMem);
- if (sysctl(mib, sizeof(mib) / sizeof(*mib), &hwMem, &hwMemSize, nullptr, 0) == KERN_SUCCESS)
+ if (sysctl(mib.data(), mib.size(), &hwMem, &hwMemSize, nullptr, 0) == 0)
s_totalValue = quint64(hwMem);
mib[1] = HW_PAGESIZE;
int hwPageSize;
size_t hwPageSizeSize = sizeof(hwPageSize);
- if (sysctl(mib, sizeof(mib) / sizeof(*mib), &hwPageSize, &hwPageSizeSize, nullptr, 0) == KERN_SUCCESS)
+ if (sysctl(mib.data(), mib.size(), &hwPageSize, &hwPageSizeSize, nullptr, 0) == 0)
s_pageSize = hwPageSize;
}
}
@@ -707,7 +707,7 @@ quint64 MemoryReader::readUsedValue() const
mach_msg_type_number_t vmStatCount = HOST_VM_INFO64_COUNT;
if (host_statistics64(mach_host_self(), HOST_VM_INFO64,
- reinterpret_cast<host_info64_t>(&vmStat), &vmStatCount) == KERN_SUCCESS) {
+ reinterpret_cast<host_info64_t>(&vmStat), &vmStatCount) == 0) {
quint64 app = vmStat.internal_page_count;
quint64 compressed = vmStat.compressor_page_count;
quint64 wired = vmStat.wire_count;
diff --git a/src/shared-main-lib/startuptimer.cpp b/src/shared-main-lib/startuptimer.cpp
index d3839e87..d8bc7c04 100644
--- a/src/shared-main-lib/startuptimer.cpp
+++ b/src/shared-main-lib/startuptimer.cpp
@@ -251,37 +251,31 @@ StartupTimer::StartupTimer()
}
#elif defined(Q_OS_MACOS) || defined(Q_OS_IOS)
- int mibNames[] = { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
- size_t procInfoSize;
-
- if (sysctl(mibNames, sizeof(mibNames) / sizeof(mibNames[0]), nullptr, &procInfoSize, nullptr, 0) == 0) {
- kinfo_proc *procInfo = static_cast<kinfo_proc *>(malloc(procInfoSize));
-
- if (sysctl(mibNames, sizeof(mibNames) / sizeof(mibNames[0]), procInfo, &procInfoSize, nullptr, 0) == 0) {
- struct timeval now;
-
- if (gettimeofday(&now, nullptr) == 0) {
- m_processCreation = (quint64(now.tv_sec) * 1000000 + quint64(now.tv_usec))
- - (quint64(procInfo->kp_proc.p_un.__p_starttime.tv_sec) * 1000000
- + quint64(procInfo->kp_proc.p_un.__p_starttime.tv_usec));
- m_initialized = true;
- }
- } else {
- qWarning("StartupTimer: could not get kinfo_proc from kernel");
+ std::array<int, 4> mib { CTL_KERN, KERN_PROC, KERN_PROC_PID, getpid() };
+ kinfo_proc procInfo;
+ size_t procInfoSize = sizeof(procInfo);
+
+ if (sysctl(mib.data(), mib.size(), &procInfo, &procInfoSize, nullptr, 0) == 0) {
+ struct timeval now;
+
+ if (gettimeofday(&now, nullptr) == 0) {
+ m_processCreation = (quint64(now.tv_sec) * 1000000 + quint64(now.tv_usec))
+ - (quint64(procInfo.kp_proc.p_un.__p_starttime.tv_sec) * 1000000
+ + quint64(procInfo.kp_proc.p_un.__p_starttime.tv_usec));
+ m_initialized = true;
}
- free(procInfo);
- } else {
- qWarning("StartupTimer: could not get size of kinfo_proc buffer");
}
// Get system up time
- if (m_initialized) {
+ if (!m_initialized) {
+ qWarning("StartupTimer: could not get kinfo_proc from kernel");
+ } else {
+ std::array<int, 2> mib { CTL_KERN, KERN_BOOTTIME };
struct timeval bootTime;
- size_t bootTimeLen = sizeof(bootTime);
- int mibNames[2] = { CTL_KERN, KERN_BOOTTIME };
- if (sysctl(mibNames, sizeof(mibNames) / sizeof(mibNames[0]), &bootTime, &bootTimeLen, nullptr, 0) == 0 ) {
+ size_t bootTimeSize = sizeof(bootTime);
+
+ if (sysctl(mib.data(), mib.size(), &bootTime, &bootTimeSize, nullptr, 0) == 0)
m_systemUpTime = quint64(time(nullptr) - bootTime.tv_sec) * 1000; // we don't need more precision on macOS
- }
}
#else