Support priority based dumpsys in surface flinger
Call dump with no args when called with CRITICAL priority. Register
service with support for critical priority dumps.
BUG: 31774394
Test: adb bugreport ~/tmp.zip
Test: adb shell dumpsys --priority CRITICAL
Test: mmm -j32 frameworks/native/services/utils && \
adb sync data && adb shell /data/nativetest/prioritydumper_test/prioritydumper_test && \
adb shell /data/nativetest64/prioritydumper_test/prioritydumper_test && \
printf "\n\n#### ALL TESTS PASSED ####\n"
Change-Id: I29140808493eb7c8805bfa338ab9a335154862b4
diff --git a/services/utils/PriorityDumper.cpp b/services/utils/PriorityDumper.cpp
index 555cf03..9851188 100644
--- a/services/utils/PriorityDumper.cpp
+++ b/services/utils/PriorityDumper.cpp
@@ -14,7 +14,7 @@
* limitations under the License.
*/
-#include "include/PriorityDumper.h"
+#include "include/serviceutils/PriorityDumper.h"
namespace android {
@@ -25,22 +25,35 @@
}
}
-void priorityDump(PriorityDumper& dumper, int fd, const Vector<String16>& args) {
+status_t PriorityDumper::dumpAll(int fd, const Vector<String16>& args) {
+ status_t status;
+ status = dumpCritical(fd, args);
+ if (status != OK) return status;
+ status = dumpHigh(fd, args);
+ if (status != OK) return status;
+ status = dumpNormal(fd, args);
+ if (status != OK) return status;
+ return status;
+}
+
+status_t PriorityDumper::priorityDump(int fd, const Vector<String16>& args) {
+ status_t status;
if (args.size() >= 2 && args[0] == PRIORITY_ARG) {
String16 priority = args[1];
Vector<String16> strippedArgs;
getStrippedArgs(strippedArgs, args, 2);
if (priority == PRIORITY_ARG_CRITICAL) {
- dumper.dumpCritical(fd, strippedArgs);
+ status = dumpCritical(fd, strippedArgs);
} else if (priority == PRIORITY_ARG_HIGH) {
- dumper.dumpHigh(fd, strippedArgs);
+ status = dumpHigh(fd, strippedArgs);
} else if (priority == PRIORITY_ARG_NORMAL) {
- dumper.dumpNormal(fd, strippedArgs);
+ status = dumpNormal(fd, strippedArgs);
} else {
- dumper.dump(fd, args);
+ status = dumpAll(fd, args);
}
} else {
- dumper.dump(fd, args);
+ status = dumpAll(fd, args);
}
+ return status;
}
-} // namespace android
\ No newline at end of file
+} // namespace android