summaryrefslogtreecommitdiff
path: root/libmemtrack
diff options
context:
space:
mode:
authorHarshdeep Dhatt <hdhatt@codeaurora.org>2016-01-29 11:24:31 -0700
committerGerrit - the friendly Code Review server <code-review@localhost>2016-05-19 15:25:14 -0700
commit149b8bc32b176f088587fa3652d27c774f604296 (patch)
tree0c0715de3b212923e51ca2520353417731cd56b6 /libmemtrack
parent2a3c7d944ce579f6ea195f2dc36209a3b5c572cb (diff)
downloaddisplay-149b8bc32b176f088587fa3652d27c774f604296.tar.gz
libmemtrack: Update parsing of kgsl mem file
The mem file now has additional field, the mapsize. This represents the size in bytes mapped to userspace. Use this value and total size of an object to derive the unaccounted size. CRs-Fixed: 982589 Change-Id: I9400e7ddacf185ebf93d0dd09e33a61685bea4dd
Diffstat (limited to 'libmemtrack')
-rw-r--r--libmemtrack/kgsl.c19
1 files changed, 10 insertions, 9 deletions
diff --git a/libmemtrack/kgsl.c b/libmemtrack/kgsl.c
index 4ad94ce8..5a6b0752 100644
--- a/libmemtrack/kgsl.c
+++ b/libmemtrack/kgsl.c
@@ -83,7 +83,7 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
* count the entry as accounted else count the entry as unaccounted.
*/
while (1) {
- unsigned long size;
+ unsigned long size, mapsize;
char line_type[7];
char flags[8];
char line_usage[19];
@@ -94,20 +94,21 @@ int kgsl_memtrack_get_memory(pid_t pid, enum memtrack_type type,
}
/* Format:
- * gpuaddr useraddr size id flags type usage sglen
- * 545ba000 545ba000 4096 1 -----pY gpumem arraybuffer 1
+ * gpuaddr useraddr size id flags type usage sglen mapsize
+ * 545ba000 545ba000 4096 1 -----pY gpumem arraybuffer 1 4096
*/
- ret = sscanf(line, "%*x %*x %lu %*d %7s %6s %18s %*d\n",
- &size, flags, line_type, line_usage);
- if (ret != 4) {
+ ret = sscanf(line, "%*x %*x %lu %*d %7s %6s %18s %*d %lu\n",
+ &size, flags, line_type, line_usage, &mapsize);
+ if (ret != 5) {
continue;
}
if (type == MEMTRACK_TYPE_GL && strcmp(line_type, "gpumem") == 0) {
- if (flags[6] == 'Y')
- accounted_size += size;
- else
+ if (flags[6] == 'Y') {
+ accounted_size += mapsize;
+ unaccounted_size += size - mapsize;
+ } else
unaccounted_size += size;
} else if (type == MEMTRACK_TYPE_GRAPHICS && strcmp(line_type, "ion") == 0) {