diff options
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) { |