diff options
author | Harshdeep Dhatt <hdhatt@codeaurora.org> | 2016-01-29 11:24:31 -0700 |
---|---|---|
committer | Gerrit - the friendly Code Review server <code-review@localhost> | 2016-05-19 15:25:14 -0700 |
commit | 149b8bc32b176f088587fa3652d27c774f604296 (patch) | |
tree | 0c0715de3b212923e51ca2520353417731cd56b6 /libmemtrack | |
parent | 2a3c7d944ce579f6ea195f2dc36209a3b5c572cb (diff) | |
download | display-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.c | 19 |
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) { |