From dccd379d2dc4f903b9f9dfd00e2f60747a7bb289 Mon Sep 17 00:00:00 2001 From: Colin Cross Date: Wed, 22 May 2013 16:33:03 -0700 Subject: libpagemap: fix vss calculation pm_map_usage was not incrementing vss for pages that were in the process's map but not occupying a physical page. Move the vss increment above the check for present mappings. Change-Id: I2706e6fbcbfe7d70f10950333a486d690bc84d6c --- libpagemap/pm_map.c | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) (limited to 'libpagemap') diff --git a/libpagemap/pm_map.c b/libpagemap/pm_map.c index 2d5c2f90..ef9e2ce6 100644 --- a/libpagemap/pm_map.c +++ b/libpagemap/pm_map.c @@ -43,6 +43,8 @@ int pm_map_usage(pm_map_t *map, pm_memusage_t *usage_out) { pm_memusage_zero(&usage); for (i = 0; i < len; i++) { + usage.vss += map->proc->ker->pagesize; + if (!PM_PAGEMAP_PRESENT(pagemap[i]) || PM_PAGEMAP_SWAPPED(pagemap[i])) continue; @@ -51,7 +53,6 @@ int pm_map_usage(pm_map_t *map, pm_memusage_t *usage_out) { &count); if (error) goto out; - usage.vss += map->proc->ker->pagesize; usage.rss += (count >= 1) ? (map->proc->ker->pagesize) : (0); usage.pss += (count >= 1) ? (map->proc->ker->pagesize / count) : (0); usage.uss += (count == 1) ? (map->proc->ker->pagesize) : (0); -- cgit v1.2.3