diff options
author | 2021-09-14 14:18:34 +0000 | |
---|---|---|
committer | 2021-09-14 14:18:34 +0000 | |
commit | c9de1851a3d15955a8aa8c5db3ec51dd2b3f06b0 (patch) | |
tree | ecbb959432033ee4f19302a03c2289e983c2c014 | |
parent | 4dae4d9b23a182b1f9489e6440a78bf53a769dce (diff) | |
parent | f4b83741a8170c7e21b6a3003cac76eed533d702 (diff) |
Merge "Extend dumpstate.dry_run restrictions" am: a938daa1c6 am: 17852592f0 am: f4b83741a8
Original change: https://android-review.googlesource.com/c/platform/frameworks/native/+/1808918
Change-Id: Ifcb83c05d9a53fa48ab37e2e90f69ef4ef2db2df
-rw-r--r-- | cmds/dumpstate/dumpstate.cpp | 43 |
1 files changed, 26 insertions, 17 deletions
diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp index 75505f37a8..eab72f48b0 100644 --- a/cmds/dumpstate/dumpstate.cpp +++ b/cmds/dumpstate/dumpstate.cpp @@ -1237,22 +1237,29 @@ static Dumpstate::RunStatus RunDumpsysTextByPriority(const std::string& title, i std::string path(title); path.append(" - ").append(String8(service).c_str()); size_t bytes_written = 0; - status_t status = dumpsys.startDumpThread(Dumpsys::TYPE_DUMP, service, args); - if (status == OK) { - dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority); - std::chrono::duration<double> elapsed_seconds; - if (priority == IServiceManager::DUMP_FLAG_PRIORITY_HIGH && - service == String16("meminfo")) { - // Use a longer timeout for meminfo, since 30s is not always enough. - status = dumpsys.writeDump(STDOUT_FILENO, service, 60s, - /* as_proto = */ false, elapsed_seconds, bytes_written); - } else { - status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout, - /* as_proto = */ false, elapsed_seconds, bytes_written); + if (PropertiesHelper::IsDryRun()) { + dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority); + dumpsys.writeDumpFooter(STDOUT_FILENO, service, std::chrono::milliseconds(1)); + } else { + status_t status = dumpsys.startDumpThread(Dumpsys::TYPE_DUMP, service, args); + if (status == OK) { + dumpsys.writeDumpHeader(STDOUT_FILENO, service, priority); + std::chrono::duration<double> elapsed_seconds; + if (priority == IServiceManager::DUMP_FLAG_PRIORITY_HIGH && + service == String16("meminfo")) { + // Use a longer timeout for meminfo, since 30s is not always enough. + status = dumpsys.writeDump(STDOUT_FILENO, service, 60s, + /* as_proto = */ false, elapsed_seconds, + bytes_written); + } else { + status = dumpsys.writeDump(STDOUT_FILENO, service, service_timeout, + /* as_proto = */ false, elapsed_seconds, + bytes_written); + } + dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds); + bool dump_complete = (status == OK); + dumpsys.stopDumpThread(dump_complete); } - dumpsys.writeDumpFooter(STDOUT_FILENO, service, elapsed_seconds); - bool dump_complete = (status == OK); - dumpsys.stopDumpThread(dump_complete); } auto elapsed_duration = std::chrono::duration_cast<std::chrono::milliseconds>( @@ -1836,8 +1843,10 @@ Dumpstate::RunStatus Dumpstate::DumpstateDefaultAfterCritical() { } /* Run some operations that require root. */ - ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping()); - ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping()); + if (!PropertiesHelper::IsDryRun()) { + ds.tombstone_data_ = GetDumpFds(TOMBSTONE_DIR, TOMBSTONE_FILE_PREFIX, !ds.IsZipping()); + ds.anr_data_ = GetDumpFds(ANR_DIR, ANR_FILE_PREFIX, !ds.IsZipping()); + } ds.AddDir(RECOVERY_DIR, true); ds.AddDir(RECOVERY_DATA_DIR, true); |