From 5153321f0cfd9a291eab079a56b930d2e2f6ef4d Mon Sep 17 00:00:00 2001 From: Dave Andreoli Date: Mon, 30 Jan 2017 21:23:23 +0100 Subject: [PATCH] mem gadget: adjust a little bit the values calculation Now the gadget show EXACTLY the same values of the free command on my machine, but note: I found at least 3 different implementation of procpc so your values could be a bit different. --- src/modules/sysinfo/memusage/memusage_proc.c | 31 ++++++++++---------- 1 file changed, 16 insertions(+), 15 deletions(-) diff --git a/src/modules/sysinfo/memusage/memusage_proc.c b/src/modules/sysinfo/memusage/memusage_proc.c index 1c4257cf1..9f66ce17e 100644 --- a/src/modules/sysinfo/memusage/memusage_proc.c +++ b/src/modules/sysinfo/memusage/memusage_proc.c @@ -21,9 +21,11 @@ void _memusage_proc_getusage(unsigned long *mem_total, { char line[256]; int found = 0; - long tmp_swp_total = -1; - long tmp_swp_free = -1; - long tmp_mem_free = -1; + unsigned long tmp_swp_total = 0; + unsigned long tmp_swp_free = 0; + unsigned long tmp_mem_free = 0; + unsigned long tmp_mem_cached = 0; + unsigned long tmp_mem_slab = 0; FILE *f; *mem_total = 0; @@ -51,7 +53,12 @@ void _memusage_proc_getusage(unsigned long *mem_total, } else if (!strncmp("Cached:", line, 7)) { - *mem_cached = _line_parse(line); + tmp_mem_cached = _line_parse(line); + found++; + } + else if (!strncmp("Slab:", line, 5)) + { + tmp_mem_slab = _line_parse(line); found++; } else if (!strncmp("Buffers:", line, 8)) @@ -75,20 +82,14 @@ void _memusage_proc_getusage(unsigned long *mem_total, found++; } - if (found >= 7) + if (found >= 8) break; } fclose(f); - if ((tmp_mem_free != -1) && (*mem_total)) - { - *mem_used = *mem_total - tmp_mem_free - - *mem_cached - *mem_buffers - *mem_shared; - } + *mem_cached = tmp_mem_cached + tmp_mem_slab; + *mem_used = *mem_total - tmp_mem_free - *mem_cached - *mem_buffers; - if ((tmp_swp_total != -1) && (tmp_swp_free != -1)) - { - *swp_total = tmp_swp_total; - *swp_used = tmp_swp_total - tmp_swp_free; - } + *swp_total = tmp_swp_total; + *swp_used = tmp_swp_total - tmp_swp_free; }