Loading bootstat/Android.bp +36 −3 Original line number Diff line number Diff line Loading @@ -67,9 +67,6 @@ cc_binary { name: "bootstat", defaults: ["bootstat_defaults"], static_libs: ["libbootstat"], shared_libs: [ "libstatslog" ], init_rc: ["bootstat.rc"], product_variables: { debuggable: { Loading @@ -77,6 +74,15 @@ cc_binary { }, }, srcs: ["bootstat.cpp"], generated_sources: [ "statslog_bootstats.cpp", ], generated_headers: [ "statslog_bootstats.h", ], shared_libs: [ "libstatssocket", ], } // Native tests Loading @@ -98,3 +104,30 @@ cc_test { unit_test: true, }, } // StatsD atom logging //------------------------------------------------------------------------------ genrule { name: "statslog_bootstats.h", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen)" + " --header $(genDir)/statslog_bootstats.h" + " --module bootstats" + " --namespace android,util,bootstats", out: [ "statslog_bootstats.h", ], } genrule { name: "statslog_bootstats.cpp", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen)" + " --cpp $(genDir)/statslog_bootstats.cpp" + " --module bootstats" + " --namespace android,util,bootstats" + " --importHeader statslog_bootstats.h", out: [ "statslog_bootstats.cpp", ], } bootstat/bootstat.cpp +70 −67 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ #include <android/log.h> #include <cutils/android_reboot.h> #include <cutils/properties.h> #include <statslog.h> #include <statslog_bootstats.h> #include "boot_event_record_store.h" Loading @@ -62,78 +62,80 @@ struct AtomInfo { const std::unordered_map<std::string_view, AtomInfo> kBootEventToAtomInfo = { // ELAPSED_TIME {"ro.boottime.init", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}}, {"boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}}, {"boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}}, {"factory_reset_boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}}, {"factory_reset_boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util:: {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION}}, {"ota_boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}}, {"ota_boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}}, // DURATION {"absolute_boot_time", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}}, {"boottime.bootloader.1BLE", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}}, {"boottime.bootloader.1BLL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}}, {"boottime.bootloader.KL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}}, {"boottime.bootloader.2BLE", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}}, {"boottime.bootloader.2BLL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}}, {"boottime.bootloader.SW", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}}, {"boottime.bootloader.total", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}}, {"boottime.init.cold_boot_wait", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}}, {"time_since_factory_reset", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}}, {"ro.boottime.init.first_stage", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}}, {"ro.boottime.init.selinux", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}}, // UTC_TIME {"factory_reset", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}}, {"factory_reset_current_time", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}}, {"factory_reset_record_value", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}}, // ERROR_CODE {"factory_reset_current_time_failure", {android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED, android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}}, {android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}}, }; // Scans the boot event record store for record files and logs each boot event Loading @@ -146,12 +148,12 @@ void LogBootEvents() { const auto& name = event.first; const auto& info = kBootEventToAtomInfo.find(name); if (info != kBootEventToAtomInfo.end()) { if (info->second.atom == android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) { android::util::stats_write(static_cast<int32_t>(info->second.atom), if (info->second.atom == android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) { android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom), static_cast<int32_t>(info->second.event), static_cast<int32_t>(event.second)); } else { android::util::stats_write(static_cast<int32_t>(info->second.atom), android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom), static_cast<int32_t>(info->second.event), static_cast<int64_t>(event.second)); } Loading Loading @@ -1271,9 +1273,9 @@ void LogBootInfoToStatsd(std::chrono::milliseconds end_time, double time_since_last_boot_sec) { auto reason = android::base::GetProperty(bootloader_reboot_reason_property, "<EMPTY>"); auto system_reason = android::base::GetProperty(system_reboot_reason_property, "<EMPTY>"); android::util::stats_write(android::util::BOOT_SEQUENCE_REPORTED, reason.c_str(), system_reason.c_str(), end_time.count(), total_duration.count(), (int64_t)bootloader_duration_ms, android::util::bootstats::stats_write(android::util::bootstats::BOOT_SEQUENCE_REPORTED, reason.c_str(), system_reason.c_str(), end_time.count(), total_duration.count(), (int64_t)bootloader_duration_ms, (int64_t)time_since_last_boot_sec * 1000); } Loading Loading @@ -1427,10 +1429,11 @@ void RecordFactoryReset() { if (current_time_utc < 0) { // UMA does not display negative values in buckets, so convert to positive. // Logging via BootEventRecordStore. android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE), android::util::bootstats:: BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE), static_cast<int32_t>(std::abs(current_time_utc))); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading @@ -1439,10 +1442,10 @@ void RecordFactoryReset() { std::abs(current_time_utc)); return; } else { android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME), android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME), static_cast<int64_t>(current_time_utc)); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading @@ -1463,10 +1466,10 @@ void RecordFactoryReset() { // Calculate and record the difference in time between now and the // factory_reset time. time_t factory_reset_utc = record.second; android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE), android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE), static_cast<int64_t>(factory_reset_utc)); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading Loading
bootstat/Android.bp +36 −3 Original line number Diff line number Diff line Loading @@ -67,9 +67,6 @@ cc_binary { name: "bootstat", defaults: ["bootstat_defaults"], static_libs: ["libbootstat"], shared_libs: [ "libstatslog" ], init_rc: ["bootstat.rc"], product_variables: { debuggable: { Loading @@ -77,6 +74,15 @@ cc_binary { }, }, srcs: ["bootstat.cpp"], generated_sources: [ "statslog_bootstats.cpp", ], generated_headers: [ "statslog_bootstats.h", ], shared_libs: [ "libstatssocket", ], } // Native tests Loading @@ -98,3 +104,30 @@ cc_test { unit_test: true, }, } // StatsD atom logging //------------------------------------------------------------------------------ genrule { name: "statslog_bootstats.h", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen)" + " --header $(genDir)/statslog_bootstats.h" + " --module bootstats" + " --namespace android,util,bootstats", out: [ "statslog_bootstats.h", ], } genrule { name: "statslog_bootstats.cpp", tools: ["stats-log-api-gen"], cmd: "$(location stats-log-api-gen)" + " --cpp $(genDir)/statslog_bootstats.cpp" + " --module bootstats" + " --namespace android,util,bootstats" + " --importHeader statslog_bootstats.h", out: [ "statslog_bootstats.cpp", ], }
bootstat/bootstat.cpp +70 −67 Original line number Diff line number Diff line Loading @@ -46,7 +46,7 @@ #include <android/log.h> #include <cutils/android_reboot.h> #include <cutils/properties.h> #include <statslog.h> #include <statslog_bootstats.h> #include "boot_event_record_store.h" Loading @@ -62,78 +62,80 @@ struct AtomInfo { const std::unordered_map<std::string_view, AtomInfo> kBootEventToAtomInfo = { // ELAPSED_TIME {"ro.boottime.init", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__ANDROID_INIT_STAGE_1}}, {"boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE}}, {"boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__BOOT_COMPLETE_NO_ENCRYPTION}}, {"factory_reset_boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE}}, {"factory_reset_boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util:: {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__FACTORY_RESET_BOOT_COMPLETE_NO_ENCRYPTION}}, {"ota_boot_complete", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE}}, {"ota_boot_complete_no_encryption", {android::util::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}}, {android::util::bootstats::BOOT_TIME_EVENT_ELAPSED_TIME_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ELAPSED_TIME__EVENT__OTA_BOOT_COMPLETE_NO_ENCRYPTION}}, // DURATION {"absolute_boot_time", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ABSOLUTE_BOOT_TIME}}, {"boottime.bootloader.1BLE", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_EXEC}}, {"boottime.bootloader.1BLL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_FIRST_STAGE_LOAD}}, {"boottime.bootloader.KL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_KERNEL_LOAD}}, {"boottime.bootloader.2BLE", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_EXEC}}, {"boottime.bootloader.2BLL", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_SECOND_STAGE_LOAD}}, {"boottime.bootloader.SW", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_UI_WAIT}}, {"boottime.bootloader.total", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__BOOTLOADER_TOTAL}}, {"boottime.init.cold_boot_wait", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__COLDBOOT_WAIT}}, {"time_since_factory_reset", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__FACTORY_RESET_TIME_SINCE_RESET}}, {"ro.boottime.init.first_stage", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__ANDROID_INIT_STAGE_1}}, {"ro.boottime.init.selinux", {android::util::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}}, {android::util::bootstats::BOOT_TIME_EVENT_DURATION_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_DURATION__EVENT__SELINUX_INIT}}, // UTC_TIME {"factory_reset", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RESET_TIME}}, {"factory_reset_current_time", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME}}, {"factory_reset_record_value", {android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}}, {android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED, android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE}}, // ERROR_CODE {"factory_reset_current_time_failure", {android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED, android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}}, {android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED, android::util::bootstats:: BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE}}, }; // Scans the boot event record store for record files and logs each boot event Loading @@ -146,12 +148,12 @@ void LogBootEvents() { const auto& name = event.first; const auto& info = kBootEventToAtomInfo.find(name); if (info != kBootEventToAtomInfo.end()) { if (info->second.atom == android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) { android::util::stats_write(static_cast<int32_t>(info->second.atom), if (info->second.atom == android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED) { android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom), static_cast<int32_t>(info->second.event), static_cast<int32_t>(event.second)); } else { android::util::stats_write(static_cast<int32_t>(info->second.atom), android::util::bootstats::stats_write(static_cast<int32_t>(info->second.atom), static_cast<int32_t>(info->second.event), static_cast<int64_t>(event.second)); } Loading Loading @@ -1271,9 +1273,9 @@ void LogBootInfoToStatsd(std::chrono::milliseconds end_time, double time_since_last_boot_sec) { auto reason = android::base::GetProperty(bootloader_reboot_reason_property, "<EMPTY>"); auto system_reason = android::base::GetProperty(system_reboot_reason_property, "<EMPTY>"); android::util::stats_write(android::util::BOOT_SEQUENCE_REPORTED, reason.c_str(), system_reason.c_str(), end_time.count(), total_duration.count(), (int64_t)bootloader_duration_ms, android::util::bootstats::stats_write(android::util::bootstats::BOOT_SEQUENCE_REPORTED, reason.c_str(), system_reason.c_str(), end_time.count(), total_duration.count(), (int64_t)bootloader_duration_ms, (int64_t)time_since_last_boot_sec * 1000); } Loading Loading @@ -1427,10 +1429,11 @@ void RecordFactoryReset() { if (current_time_utc < 0) { // UMA does not display negative values in buckets, so convert to positive. // Logging via BootEventRecordStore. android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_ERROR_CODE_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_ERROR_CODE_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE), android::util::bootstats:: BOOT_TIME_EVENT_ERROR_CODE__EVENT__FACTORY_RESET_CURRENT_TIME_FAILURE), static_cast<int32_t>(std::abs(current_time_utc))); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading @@ -1439,10 +1442,10 @@ void RecordFactoryReset() { std::abs(current_time_utc)); return; } else { android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME), android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_CURRENT_TIME), static_cast<int64_t>(current_time_utc)); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading @@ -1463,10 +1466,10 @@ void RecordFactoryReset() { // Calculate and record the difference in time between now and the // factory_reset time. time_t factory_reset_utc = record.second; android::util::stats_write( static_cast<int32_t>(android::util::BOOT_TIME_EVENT_UTC_TIME_REPORTED), android::util::bootstats::stats_write( static_cast<int32_t>(android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME_REPORTED), static_cast<int32_t>( android::util::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE), android::util::bootstats::BOOT_TIME_EVENT_UTC_TIME__EVENT__FACTORY_RESET_RECORD_VALUE), static_cast<int64_t>(factory_reset_utc)); // Logging via BootEventRecordStore to see if using android::metricslogger::LogHistogram Loading