diff options
author | Colin Cross <ccross@android.com> | 2013-06-21 17:01:06 -0700 |
---|---|---|
committer | Colin Cross <ccross@android.com> | 2013-06-24 14:56:58 -0700 |
commit | 931563e96d9ff65d7d2a4642c8f26fb19e47be47 (patch) | |
tree | 465824b53a649c95853aa6fde429f569f46e1061 | |
parent | 9a209c380278ca0da6ec7b3927c957b06b685a7a (diff) | |
download | extras-931563e96d9ff65d7d2a4642c8f26fb19e47be47.tar.gz |
libpagemap: add pm_process_usage_flags
Add pm_process_usage flags to get memory usage by a process, only
counting pages with specified flags set.
Change-Id: I900b673ddbb5ae92312773a8670dd59769617268
-rw-r--r-- | libpagemap/include/pagemap/pagemap.h | 5 | ||||
-rw-r--r-- | libpagemap/pm_process.c | 12 |
2 files changed, 15 insertions, 2 deletions
diff --git a/libpagemap/include/pagemap/pagemap.h b/libpagemap/include/pagemap/pagemap.h index 047a8619..22025672 100644 --- a/libpagemap/include/pagemap/pagemap.h +++ b/libpagemap/include/pagemap/pagemap.h @@ -137,6 +137,11 @@ int pm_process_create(pm_kernel_t *ker, pid_t pid, pm_process_t **proc_out); /* Get the total memory usage of a process and store in *usage_out. */ int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out); +/* Get the total memory usage of a process and store in *usage_out, only + * counting pages with specified flags. */ +int pm_process_usage_flags(pm_process_t *proc, pm_memusage_t *usage_out, + uint64_t flags_mask, uint64_t required_flags); + /* Get the working set of a process (if ws_out != NULL), and reset it * (if reset != 0). */ int pm_process_workingset(pm_process_t *proc, pm_memusage_t *ws_out, int reset); diff --git a/libpagemap/pm_process.c b/libpagemap/pm_process.c index c9aa8cab..73c96492 100644 --- a/libpagemap/pm_process.c +++ b/libpagemap/pm_process.c @@ -69,7 +69,9 @@ int pm_process_create(pm_kernel_t *ker, pid_t pid, pm_process_t **proc_out) { return 0; } -int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out) { +int pm_process_usage_flags(pm_process_t *proc, pm_memusage_t *usage_out, + uint64_t flags_mask, uint64_t required_flags) +{ pm_memusage_t usage, map_usage; int error; int i; @@ -80,7 +82,8 @@ int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out) { pm_memusage_zero(&usage); for (i = 0; i < proc->num_maps; i++) { - error = pm_map_usage(proc->maps[i], &map_usage); + error = pm_map_usage_flags(proc->maps[i], &map_usage, flags_mask, + required_flags); if (error) return error; pm_memusage_add(&usage, &map_usage); @@ -89,6 +92,11 @@ int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out) { memcpy(usage_out, &usage, sizeof(pm_memusage_t)); return 0; + +} + +int pm_process_usage(pm_process_t *proc, pm_memusage_t *usage_out) { + return pm_process_usage_flags(proc, usage_out, 0, 0); } int pm_process_pagemap_range(pm_process_t *proc, |