summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorPasi Keranen <pasi.keranen@qt.io>2018-10-30 12:30:29 +0200
committerPasi Keränen <pasi.keranen@qt.io>2018-10-31 04:09:48 +0000
commitbfc2ac100ef3908eae812975dbd60deb4a09c289 (patch)
treeac6988cdada30f87bf810d62dd055fd624e4dc03
parent575f9bd1073f8a2f7f621985e8177f56b2b17266 (diff)
macOS: Implement profiler memory reporting
Task-number: QT3DS-2585 Change-Id: I8d1b472097bc1edda5e3a7fd2ed3a6e627d77bfa Reviewed-by: Tor Arne Vestbø <tor.arne.vestbo@qt.io>
-rw-r--r--src/runtime/q3dsprofiler.cpp25
1 files changed, 21 insertions, 4 deletions
diff --git a/src/runtime/q3dsprofiler.cpp b/src/runtime/q3dsprofiler.cpp
index f7d5b42..8303498 100644
--- a/src/runtime/q3dsprofiler.cpp
+++ b/src/runtime/q3dsprofiler.cpp
@@ -42,6 +42,11 @@
#include <sys/times.h>
#endif
+#ifdef Q_OS_MACOS
+#include <mach/mach_types.h>
+#include <mach/mach.h>
+#endif
+
QT_BEGIN_NAMESPACE
Q3DSProfiler::Q3DSProfiler()
@@ -311,7 +316,6 @@ QPair<qint64, qint64> Q3DSProfiler::memUsageForCurrentProcess()
qint64 physMappedSize = memInfo.WorkingSetSize;
qint64 commitCharge = memInfo.PrivateUsage;
m_lastMemUsage = { physMappedSize, commitCharge };
- return m_lastMemUsage;
#elif defined(Q_OS_LINUX)
QFile f(QLatin1String("/proc/self/status"));
if (!f.open(QIODevice::ReadOnly | QIODevice::Text))
@@ -335,10 +339,23 @@ QPair<qint64, qint64> Q3DSProfiler::memUsageForCurrentProcess()
}
f.close();
m_lastMemUsage = { physMappedSize, commitCharge };
- return m_lastMemUsage;
-#else
- return m_lastMemUsage;
+#elif defined(Q_OS_MACOS)
+ mach_task_basic_info_data_t taskinfo = {};
+ mach_msg_type_number_t outCount = MACH_TASK_BASIC_INFO_COUNT;
+
+ kern_return_t error = task_info(
+ mach_task_self(),
+ MACH_TASK_BASIC_INFO,
+ task_info_t(&taskinfo),
+ &outCount);
+ if (error == KERN_SUCCESS) {
+ qint64 virtualSize = qint64(taskinfo.virtual_size);
+ qint64 residentSize = qint64(taskinfo.resident_size);
+ m_lastMemUsage = { residentSize, virtualSize };
+ }
#endif
+
+ return m_lastMemUsage;
}
QT_END_NAMESPACE