Loading cmds/statsd/src/StatsLogProcessor.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ void StatsLogProcessor::OnConfigUpdated(const ConfigKey& key, const StatsdConfig if (newMetricsManager->isConfigValid()) { mUidMap->OnConfigUpdated(key); newMetricsManager->setAnomalyMonitor(mAnomalyMonitor); if (config.log_source().package().size() > 0) { if (newMetricsManager->shouldAddUidMapListener()) { // We have to add listener after the MetricsManager is constructed because it's // not safe to create wp or sp from this pointer inside its constructor. mUidMap->addListener(newMetricsManager.get()); Loading @@ -150,7 +150,8 @@ size_t StatsLogProcessor::GetMetricsSize(const ConfigKey& key) const { return it->second->byteSize(); } void StatsLogProcessor::onDumpReport(const ConfigKey& key, const uint64_t& dumpTimeStampNs, ConfigMetricsReportList* report) { void StatsLogProcessor::onDumpReport(const ConfigKey& key, const uint64_t& dumpTimeStampNs, ConfigMetricsReportList* report) { auto it = mMetricsManagers.find(key); if (it == mMetricsManagers.end()) { ALOGW("Config source %s does not exist", key.ToString().c_str()); Loading cmds/statsd/src/config/ConfigManager.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -248,11 +248,11 @@ StatsdConfig build_fake_config() { details->add_section(12); details->add_section(13);*/ AllowedLogSource* logSource = config.mutable_log_source(); logSource->add_uid(1000); logSource->add_uid(0); logSource->add_package("com.android.statsd.dogfood"); logSource->add_package("com.android.bluetooth"); config.add_allowed_log_source("AID_ROOT"); config.add_allowed_log_source("AID_SYSTEM"); config.add_allowed_log_source("AID_BLUETOOTH"); config.add_allowed_log_source("com.android.statsd.dogfood"); config.add_allowed_log_source("com.android.systemui"); // Count process state changes, slice by uid. metric = config.add_count_metric(); Loading cmds/statsd/src/metrics/MetricsManager.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mAllMetricProducers, mAllAnomalyTrackers, mConditionToMetricMap, mTrackerToMetricMap, mTrackerToConditionMap, mNoReportMetricIds); if (!config.has_log_source()) { if (config.allowed_log_source_size() == 0) { // TODO(b/70794411): uncomment the following line and remove the hard coded log source // after all configs have the log source added. // mConfigValid = false; Loading @@ -63,10 +63,14 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mAllowedUid.push_back(0); mAllowedLogSources.insert(mAllowedUid.begin(), mAllowedUid.end()); } else { mAllowedUid.insert(mAllowedUid.begin(), config.log_source().uid().begin(), config.log_source().uid().end()); mAllowedPkg.insert(mAllowedPkg.begin(), config.log_source().package().begin(), config.log_source().package().end()); for (const auto& source : config.allowed_log_source()) { auto it = UidMap::sAidToUidMapping.find(source); if (it != UidMap::sAidToUidMapping.end()) { mAllowedUid.push_back(it->second); } else { mAllowedPkg.push_back(source); } } if (mAllowedUid.size() + mAllowedPkg.size() > StatsdStats::kMaxLogSourceCount) { ALOGE("Too many log sources. This is likely to be an error in the config."); Loading cmds/statsd/src/metrics/MetricsManager.h +4 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,10 @@ public: void onUidMapReceived() override; bool shouldAddUidMapListener() const { return !mAllowedPkg.empty(); } // Config source owner can call onDumpReport() to get all the metrics collected. virtual void onDumpReport(android::util::ProtoOutputStream* protoOutput); virtual void onDumpReport(const uint64_t& dumpTimeStampNs, ConfigMetricsReport* report); Loading cmds/statsd/src/packages/UidMap.cpp +73 −0 Original line number Diff line number Diff line Loading @@ -402,6 +402,79 @@ set<int32_t> UidMap::getAppUid(const string& package) const { return results; } // Note not all the following AIDs are used as uids. Some are used only for gids. // It's ok to leave them in the map, but we won't ever see them in the log's uid field. // App's uid starts from 10000, and will not overlap with the following AIDs. const std::map<string, uint32_t> UidMap::sAidToUidMapping = {{"AID_ROOT", 0}, {"AID_SYSTEM", 1000}, {"AID_RADIO", 1001}, {"AID_BLUETOOTH", 1002}, {"AID_GRAPHICS", 1003}, {"AID_INPUT", 1004}, {"AID_AUDIO", 1005}, {"AID_CAMERA", 1006}, {"AID_LOG", 1007}, {"AID_COMPASS", 1008}, {"AID_MOUNT", 1009}, {"AID_WIFI", 1010}, {"AID_ADB", 1011}, {"AID_INSTALL", 1012}, {"AID_MEDIA", 1013}, {"AID_DHCP", 1014}, {"AID_SDCARD_RW", 1015}, {"AID_VPN", 1016}, {"AID_KEYSTORE", 1017}, {"AID_USB", 1018}, {"AID_DRM", 1019}, {"AID_MDNSR", 1020}, {"AID_GPS", 1021}, // {"AID_UNUSED1", 1022}, {"AID_MEDIA_RW", 1023}, {"AID_MTP", 1024}, // {"AID_UNUSED2", 1025}, {"AID_DRMRPC", 1026}, {"AID_NFC", 1027}, {"AID_SDCARD_R", 1028}, {"AID_CLAT", 1029}, {"AID_LOOP_RADIO", 1030}, {"AID_MEDIA_DRM", 1031}, {"AID_PACKAGE_INFO", 1032}, {"AID_SDCARD_PICS", 1033}, {"AID_SDCARD_AV", 1034}, {"AID_SDCARD_ALL", 1035}, {"AID_LOGD", 1036}, {"AID_SHARED_RELRO", 1037}, {"AID_DBUS", 1038}, {"AID_TLSDATE", 1039}, {"AID_MEDIA_EX", 1040}, {"AID_AUDIOSERVER", 1041}, {"AID_METRICS_COLL", 1042}, {"AID_METRICSD", 1043}, {"AID_WEBSERV", 1044}, {"AID_DEBUGGERD", 1045}, {"AID_MEDIA_CODEC", 1046}, {"AID_CAMERASERVER", 1047}, {"AID_FIREWALL", 1048}, {"AID_TRUNKS", 1049}, {"AID_NVRAM", 1050}, {"AID_DNS", 1051}, {"AID_DNS_TETHER", 1052}, {"AID_WEBVIEW_ZYGOTE", 1053}, {"AID_VEHICLE_NETWORK", 1054}, {"AID_MEDIA_AUDIO", 1055}, {"AID_MEDIA_VIDEO", 1056}, {"AID_MEDIA_IMAGE", 1057}, {"AID_TOMBSTONED", 1058}, {"AID_MEDIA_OBB", 1059}, {"AID_ESE", 1060}, {"AID_OTA_UPDATE", 1061}, {"AID_AUTOMOTIVE_EVS", 1062}, {"AID_LOWPAN", 1063}, {"AID_HSM", 1064}, {"AID_SHELL", 2000}, {"AID_CACHE", 2001}, {"AID_DIAG", 2002}}; } // namespace statsd } // namespace os } // namespace android No newline at end of file Loading
cmds/statsd/src/StatsLogProcessor.cpp +3 −2 Original line number Diff line number Diff line Loading @@ -127,7 +127,7 @@ void StatsLogProcessor::OnConfigUpdated(const ConfigKey& key, const StatsdConfig if (newMetricsManager->isConfigValid()) { mUidMap->OnConfigUpdated(key); newMetricsManager->setAnomalyMonitor(mAnomalyMonitor); if (config.log_source().package().size() > 0) { if (newMetricsManager->shouldAddUidMapListener()) { // We have to add listener after the MetricsManager is constructed because it's // not safe to create wp or sp from this pointer inside its constructor. mUidMap->addListener(newMetricsManager.get()); Loading @@ -150,7 +150,8 @@ size_t StatsLogProcessor::GetMetricsSize(const ConfigKey& key) const { return it->second->byteSize(); } void StatsLogProcessor::onDumpReport(const ConfigKey& key, const uint64_t& dumpTimeStampNs, ConfigMetricsReportList* report) { void StatsLogProcessor::onDumpReport(const ConfigKey& key, const uint64_t& dumpTimeStampNs, ConfigMetricsReportList* report) { auto it = mMetricsManagers.find(key); if (it == mMetricsManagers.end()) { ALOGW("Config source %s does not exist", key.ToString().c_str()); Loading
cmds/statsd/src/config/ConfigManager.cpp +5 −5 Original line number Diff line number Diff line Loading @@ -248,11 +248,11 @@ StatsdConfig build_fake_config() { details->add_section(12); details->add_section(13);*/ AllowedLogSource* logSource = config.mutable_log_source(); logSource->add_uid(1000); logSource->add_uid(0); logSource->add_package("com.android.statsd.dogfood"); logSource->add_package("com.android.bluetooth"); config.add_allowed_log_source("AID_ROOT"); config.add_allowed_log_source("AID_SYSTEM"); config.add_allowed_log_source("AID_BLUETOOTH"); config.add_allowed_log_source("com.android.statsd.dogfood"); config.add_allowed_log_source("com.android.systemui"); // Count process state changes, slice by uid. metric = config.add_count_metric(); Loading
cmds/statsd/src/metrics/MetricsManager.cpp +9 −5 Original line number Diff line number Diff line Loading @@ -53,7 +53,7 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mAllMetricProducers, mAllAnomalyTrackers, mConditionToMetricMap, mTrackerToMetricMap, mTrackerToConditionMap, mNoReportMetricIds); if (!config.has_log_source()) { if (config.allowed_log_source_size() == 0) { // TODO(b/70794411): uncomment the following line and remove the hard coded log source // after all configs have the log source added. // mConfigValid = false; Loading @@ -63,10 +63,14 @@ MetricsManager::MetricsManager(const ConfigKey& key, const StatsdConfig& config, mAllowedUid.push_back(0); mAllowedLogSources.insert(mAllowedUid.begin(), mAllowedUid.end()); } else { mAllowedUid.insert(mAllowedUid.begin(), config.log_source().uid().begin(), config.log_source().uid().end()); mAllowedPkg.insert(mAllowedPkg.begin(), config.log_source().package().begin(), config.log_source().package().end()); for (const auto& source : config.allowed_log_source()) { auto it = UidMap::sAidToUidMapping.find(source); if (it != UidMap::sAidToUidMapping.end()) { mAllowedUid.push_back(it->second); } else { mAllowedPkg.push_back(source); } } if (mAllowedUid.size() + mAllowedPkg.size() > StatsdStats::kMaxLogSourceCount) { ALOGE("Too many log sources. This is likely to be an error in the config."); Loading
cmds/statsd/src/metrics/MetricsManager.h +4 −0 Original line number Diff line number Diff line Loading @@ -57,6 +57,10 @@ public: void onUidMapReceived() override; bool shouldAddUidMapListener() const { return !mAllowedPkg.empty(); } // Config source owner can call onDumpReport() to get all the metrics collected. virtual void onDumpReport(android::util::ProtoOutputStream* protoOutput); virtual void onDumpReport(const uint64_t& dumpTimeStampNs, ConfigMetricsReport* report); Loading
cmds/statsd/src/packages/UidMap.cpp +73 −0 Original line number Diff line number Diff line Loading @@ -402,6 +402,79 @@ set<int32_t> UidMap::getAppUid(const string& package) const { return results; } // Note not all the following AIDs are used as uids. Some are used only for gids. // It's ok to leave them in the map, but we won't ever see them in the log's uid field. // App's uid starts from 10000, and will not overlap with the following AIDs. const std::map<string, uint32_t> UidMap::sAidToUidMapping = {{"AID_ROOT", 0}, {"AID_SYSTEM", 1000}, {"AID_RADIO", 1001}, {"AID_BLUETOOTH", 1002}, {"AID_GRAPHICS", 1003}, {"AID_INPUT", 1004}, {"AID_AUDIO", 1005}, {"AID_CAMERA", 1006}, {"AID_LOG", 1007}, {"AID_COMPASS", 1008}, {"AID_MOUNT", 1009}, {"AID_WIFI", 1010}, {"AID_ADB", 1011}, {"AID_INSTALL", 1012}, {"AID_MEDIA", 1013}, {"AID_DHCP", 1014}, {"AID_SDCARD_RW", 1015}, {"AID_VPN", 1016}, {"AID_KEYSTORE", 1017}, {"AID_USB", 1018}, {"AID_DRM", 1019}, {"AID_MDNSR", 1020}, {"AID_GPS", 1021}, // {"AID_UNUSED1", 1022}, {"AID_MEDIA_RW", 1023}, {"AID_MTP", 1024}, // {"AID_UNUSED2", 1025}, {"AID_DRMRPC", 1026}, {"AID_NFC", 1027}, {"AID_SDCARD_R", 1028}, {"AID_CLAT", 1029}, {"AID_LOOP_RADIO", 1030}, {"AID_MEDIA_DRM", 1031}, {"AID_PACKAGE_INFO", 1032}, {"AID_SDCARD_PICS", 1033}, {"AID_SDCARD_AV", 1034}, {"AID_SDCARD_ALL", 1035}, {"AID_LOGD", 1036}, {"AID_SHARED_RELRO", 1037}, {"AID_DBUS", 1038}, {"AID_TLSDATE", 1039}, {"AID_MEDIA_EX", 1040}, {"AID_AUDIOSERVER", 1041}, {"AID_METRICS_COLL", 1042}, {"AID_METRICSD", 1043}, {"AID_WEBSERV", 1044}, {"AID_DEBUGGERD", 1045}, {"AID_MEDIA_CODEC", 1046}, {"AID_CAMERASERVER", 1047}, {"AID_FIREWALL", 1048}, {"AID_TRUNKS", 1049}, {"AID_NVRAM", 1050}, {"AID_DNS", 1051}, {"AID_DNS_TETHER", 1052}, {"AID_WEBVIEW_ZYGOTE", 1053}, {"AID_VEHICLE_NETWORK", 1054}, {"AID_MEDIA_AUDIO", 1055}, {"AID_MEDIA_VIDEO", 1056}, {"AID_MEDIA_IMAGE", 1057}, {"AID_TOMBSTONED", 1058}, {"AID_MEDIA_OBB", 1059}, {"AID_ESE", 1060}, {"AID_OTA_UPDATE", 1061}, {"AID_AUTOMOTIVE_EVS", 1062}, {"AID_LOWPAN", 1063}, {"AID_HSM", 1064}, {"AID_SHELL", 2000}, {"AID_CACHE", 2001}, {"AID_DIAG", 2002}}; } // namespace statsd } // namespace os } // namespace android No newline at end of file