[wing/wip/monotonic] Add wing_get_process_memory



commit 43a0b786285a9c03ad960e44770e48d6a1b596f0
Author: Ignacio Casal Quinteiro <qignacio amazon com>
Date:   Wed Mar 29 11:05:49 2017 +0200

    Add wing_get_process_memory

 wing/wingutils.c |   20 ++++++++++++++++++++
 wing/wingutils.h |    4 ++++
 2 files changed, 24 insertions(+), 0 deletions(-)
---
diff --git a/wing/wingutils.c b/wing/wingutils.c
index 4d5e994..45e1dc3 100644
--- a/wing/wingutils.c
+++ b/wing/wingutils.c
@@ -112,3 +112,23 @@ wing_get_monotonic_time (void)
 
   return g_get_monotonic_time ();
 }
+
+gboolean
+wing_get_process_memory(gsize *total_virtual_memory,
+                        gsize *total_physical_memory)
+{
+  gboolean res;
+  /* see: https://msdn.microsoft.com/en-us/library/windows/desktop/ms684879(v=vs.85).aspx */
+  PROCESS_MEMORY_COUNTERS_EX pmc;
+
+  res = GetProcessMemoryInfo (GetCurrentProcess (), (PPROCESS_MEMORY_COUNTERS) &pmc, sizeof (pmc));
+  if (res)
+    {
+      /* note: the memory shown by the task manager is usually the private working set,
+       * we are using the working set size instead */
+      *total_virtual_memory = pmc.WorkingSetSize + pmc.PagefileUsage;
+      *total_physical_memory = pmc.WorkingSetSize;
+    }
+
+  return res;
+}
diff --git a/wing/wingutils.h b/wing/wingutils.h
index 23220b0..42d54b0 100644
--- a/wing/wingutils.h
+++ b/wing/wingutils.h
@@ -36,6 +36,10 @@ gboolean     wing_get_version_number   (gint *major,
 WING_AVAILABLE_IN_ALL
 gint64       wing_get_monotonic_time   (void);
 
+WING_AVAILABLE_IN_ALL
+gboolean     wing_get_process_memory   (gsize *total_virtual_memory,
+                                        gsize *total_physical_memory);
+
 G_END_DECLS
 
 #endif /* WING_UTILS_H */


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]