summaryrefslogtreecommitdiff
path: root/cmds/dumpstate/dumpstate.cpp
diff options
context:
space:
mode:
author android-build-team Robot <android-build-team-robot@google.com> 2019-05-23 03:15:28 +0000
committer android-build-team Robot <android-build-team-robot@google.com> 2019-05-23 03:15:28 +0000
commit35d2433dc49d5eacdff3102783083c95e4c68b7a (patch)
treefb0ca40ad4b0a29b891675036a452a897b0ceba5 /cmds/dumpstate/dumpstate.cpp
parentdcd18f20704898da5b59411b0163d0531008646e (diff)
parent030764d25fc52a8ba5a534feccd84168b60e8182 (diff)
Snap for 5595753 from 030764d25fc52a8ba5a534feccd84168b60e8182 to qt-release
Change-Id: I63da887964c504eea736f1e0e29fdeae294a8342
Diffstat (limited to 'cmds/dumpstate/dumpstate.cpp')
-rw-r--r--cmds/dumpstate/dumpstate.cpp31
1 files changed, 31 insertions, 0 deletions
diff --git a/cmds/dumpstate/dumpstate.cpp b/cmds/dumpstate/dumpstate.cpp
index 0c8b1aa55e..4ac7b689cf 100644
--- a/cmds/dumpstate/dumpstate.cpp
+++ b/cmds/dumpstate/dumpstate.cpp
@@ -19,6 +19,7 @@
#include <dirent.h>
#include <errno.h>
#include <fcntl.h>
+#include <inttypes.h>
#include <libgen.h>
#include <limits.h>
#include <stdbool.h>
@@ -50,9 +51,11 @@
#include <android-base/stringprintf.h>
#include <android-base/strings.h>
#include <android-base/unique_fd.h>
+#include <android/content/pm/IPackageManagerNative.h>
#include <android/hardware/dumpstate/1.0/IDumpstateDevice.h>
#include <android/hidl/manager/1.0/IServiceManager.h>
#include <android/os/IIncidentCompanion.h>
+#include <binder/IServiceManager.h>
#include <cutils/native_handle.h>
#include <cutils/properties.h>
#include <debuggerd/client.h>
@@ -204,6 +207,30 @@ static bool IsFileEmpty(const std::string& file_path) {
return file.tellg() <= 0;
}
+int64_t GetModuleMetadataVersion() {
+ auto binder = defaultServiceManager()->getService(android::String16("package_native"));
+ if (binder == nullptr) {
+ MYLOGE("Failed to retrieve package_native service");
+ return 0L;
+ }
+ auto package_service = android::interface_cast<content::pm::IPackageManagerNative>(binder);
+ std::string package_name;
+ auto status = package_service->getModuleMetadataPackageName(&package_name);
+ if (!status.isOk()) {
+ MYLOGE("Failed to retrieve module metadata package name: %s", status.toString8().c_str());
+ return 0L;
+ }
+ MYLOGD("Module metadata package name: %s", package_name.c_str());
+ int64_t version_code;
+ status = package_service->getVersionCodeForPackage(android::String16(package_name.c_str()),
+ &version_code);
+ if (!status.isOk()) {
+ MYLOGE("Failed to retrieve module metadata version: %s", status.toString8().c_str());
+ return 0L;
+ }
+ return version_code;
+}
+
} // namespace
} // namespace os
} // namespace android
@@ -741,6 +768,10 @@ void Dumpstate::PrintHeader() const {
printf("Bootloader: %s\n", bootloader.c_str());
printf("Radio: %s\n", radio.c_str());
printf("Network: %s\n", network.c_str());
+ int64_t module_metadata_version = android::os::GetModuleMetadataVersion();
+ if (module_metadata_version != 0) {
+ printf("Module Metadata version: %" PRId64 "\n", module_metadata_version);
+ }
printf("Kernel: ");
DumpFileToFd(STDOUT_FILENO, "", "/proc/version");