summaryrefslogtreecommitdiff
path: root/libmemtrack
diff options
context:
space:
mode:
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) {