media.log: dump all readers with dumpsys option "r"
Bug: 37153050
Test: builds OK, "dumpsys media.log r" shows all readers
Change-Id: I584dbbeb0532b019441f7aeb4793a9f4e3f6bdda
diff --git a/services/medialog/MediaLogService.cpp b/services/medialog/MediaLogService.cpp
index aaf1018..a5512e1 100644
--- a/services/medialog/MediaLogService.cpp
+++ b/services/medialog/MediaLogService.cpp
@@ -26,7 +26,7 @@
namespace android {
-// static const char kDeadlockedString[] = "MediaLogService may be deadlocked\n";
+ static const char kDeadlockedString[] = "MediaLogService may be deadlocked\n";
MediaLogService::MediaLogService() :
BnMediaLogService(),
mMergerShared((NBLog::Shared*) malloc(NBLog::Timeline::sharedSize(kMergeBufferSize))),
@@ -99,35 +99,38 @@
return NO_ERROR;
}
-#if 0
- Vector<NBLog::NamedReader> namedReaders;
- {
- bool locked = dumpTryLock(mLock);
+ if (args.size() > 0) {
+ const String8 arg0(args[0]);
+ if (!strcmp(arg0.string(), "-r")) {
+ // needed because mNamedReaders is protected by mLock
+ bool locked = dumpTryLock(mLock);
- // failed to lock - MediaLogService is probably deadlocked
- if (!locked) {
- String8 result(kDeadlockedString);
- if (fd >= 0) {
- write(fd, result.string(), result.size());
- } else {
- ALOGW("%s:", result.string());
+ // failed to lock - MediaLogService is probably deadlocked
+ if (!locked) {
+ String8 result(kDeadlockedString);
+ if (fd >= 0) {
+ write(fd, result.string(), result.size());
+ } else {
+ ALOGW("%s:", result.string());
+ }
+ // TODO should we instead proceed to mMergeReader.dump? does it need lock?
+ return NO_ERROR;
}
- return NO_ERROR;
- }
- // namedReaders = mNamedReaders;
- // for (size_t i = 0; i < namedReaders.size(); i++) {
- // const NBLog::NamedReader& namedReader = namedReaders[i];
- // if (fd >= 0) {
- // dprintf(fd, "\n%s:\n", namedReader.name());
- // } else {
- // ALOGI("%s:", namedReader.name());
- // }
- // namedReader.reader()->dump(fd, 0 /*indent*/);
- // }
- mLock.unlock();
+ for (const auto& namedReader : mNamedReaders) {
+ if (fd >= 0) {
+ dprintf(fd, "\n%s:\n", namedReader.name());
+ } else {
+ ALOGI("%s:", namedReader.name());
+ }
+ // TODO This code is for testing, remove it when done
+ // namedReader.reader()->dump(fd, 0 /*indent*/);
+ }
+
+ mLock.unlock();
+ }
}
-#endif
+
// FIXME request merge to make sure log is up to date
mMergeReader.dump(fd);
return NO_ERROR;