Add a flag to distinguish shared VMAs
This flag is required to filter out shared VMAs when compacting memory
using process_madvise.
Test: built and flashed
Bug: 173258203
Change-Id: I58e33d4d2cef2e299e9bd2a2724246830842f789
diff --git a/src/profiling/common/unwind_support.cc b/src/profiling/common/unwind_support.cc
index dee50de..4a1937d 100644
--- a/src/profiling/common/unwind_support.cc
+++ b/src/profiling/common/unwind_support.cc
@@ -69,15 +69,16 @@
unwindstack::MapInfo* prev_map = nullptr;
unwindstack::MapInfo* prev_real_map = nullptr;
return android::procinfo::ReadMapFileContent(
- &content[0], [&](uint64_t start, uint64_t end, uint16_t flags,
- uint64_t pgoff, ino_t, const char* name) {
+ &content[0], [&](const android::procinfo::MapInfo& mapinfo) {
// Mark a device map in /dev/ and not in /dev/ashmem/ specially.
- if (strncmp(name, "/dev/", 5) == 0 &&
- strncmp(name + 5, "ashmem/", 7) != 0) {
+ auto flags = mapinfo.flags;
+ if (strncmp(mapinfo.name.c_str(), "/dev/", 5) == 0 &&
+ strncmp(mapinfo.name.c_str() + 5, "ashmem/", 7) != 0) {
flags |= unwindstack::MAPS_FLAGS_DEVICE_MAP;
}
maps_.emplace_back(new unwindstack::MapInfo(
- prev_map, prev_real_map, start, end, pgoff, flags, name));
+ prev_map, prev_real_map, mapinfo.start, mapinfo.end, mapinfo.pgoff,
+ flags, mapinfo.name));
prev_map = maps_.back().get();
if (!prev_map->IsBlank()) {
prev_real_map = prev_map;