Loading libmetricslogger/OWNERS +1 −0 Original line number Diff line number Diff line cwren@google.com jhawkins@google.com libmetricslogger/include/metricslogger/metrics_logger.h +59 −0 Original line number Diff line number Diff line Loading @@ -77,10 +77,44 @@ enum { ACTION_BOOT = 1098, FIELD_PLATFORM_REASON = 1099, FIELD_DURATION_MILLIS = 1304, FIELD_END_BATTERY_PERCENT = 1308, ACTION_HIDDEN_API_ACCESSED = 1391, FIELD_HIDDEN_API_ACCESS_METHOD = 1392, FIELD_HIDDEN_API_ACCESS_DENIED = 1393, FIELD_HIDDEN_API_SIGNATURE = 1394, ACTION_USB_CONNECTOR_CONNECTED = 1422, ACTION_USB_CONNECTOR_DISCONNECTED = 1423, ACTION_USB_AUDIO_CONNECTED = 1424, FIELD_USB_AUDIO_VIDPID = 1425, ACTION_USB_AUDIO_DISCONNECTED = 1426, ACTION_HARDWARE_FAILED = 1427, FIELD_HARDWARE_TYPE = 1428, FIELD_HARDWARE_FAILURE_CODE = 1429, ACTION_PHYSICAL_DROP = 1430, FIELD_CONFIDENCE_PERCENT = 1431, FIELD_ACCEL_MILLI_G = 1432, ACTION_BATTERY_HEALTH = 1433, FIELD_BATTERY_HEALTH_SNAPSHOT_TYPE = 1434, FIELD_BATTERY_TEMPERATURE_DECI_C = 1435, FIELD_BATTERY_VOLTAGE_UV = 1436, FIELD_BATTERY_OPEN_CIRCUIT_VOLTAGE_UV = 1437, ACTION_BATTERY_CHARGE_CYCLES = 1438, FIELD_BATTERY_CHARGE_CYCLES = 1439, ACTION_SLOW_IO = 1442, FIELD_IO_OPERATION_TYPE = 1443, FIELD_IO_OPERATION_COUNT = 1444, ACTION_SPEAKER_IMPEDANCE = 1445, FIELD_SPEAKER_IMPEDANCE_MILLIOHMS = 1446, FIELD_SPEAKER_LOCATION = 1447, FIELD_BATTERY_RESISTANCE_UOHMS = 1448, FIELD_BATTERY_CURRENT_UA = 1449, FIELD_HARDWARE_LOCATION = 1450, ACTION_BATTERY_CAUSED_SHUTDOWN = 1441, }; enum { Loading @@ -94,5 +128,30 @@ enum { ACCESS_METHOD_LINKING = 3, }; enum HardwareType { HARDWARE_UNKNOWN = 0, HARDWARE_MICROPHONE = 1, HARDWARE_CODEC = 2, HARDWARE_SPEAKER = 3, HARDWARE_FINGERPRINT = 4, }; enum HardwareFailureCode { HARDWARE_FAILURE_UNKNOWN = 0, HARDWARE_FAILURE_COMPLETE = 1, HARDWARE_FAILURE_SPEAKER_HIGH_Z = 2, HARDWARE_FAILURE_SPEAKER_SHORT = 3, HARDWARE_FAILURE_FINGERPRINT_SENSOR_BROKEN = 4, HARDWARE_FAILURE_FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5, }; enum IoOperation { IOOP_UNKNOWN = 0, IOOP_READ = 1, IOOP_WRITE = 2, IOOP_UNMAP = 3, IOOP_SYNC = 4, }; } // namespace metricslogger } // namespace android libprocessgroup/processgroup.cpp +24 −5 Original line number Diff line number Diff line Loading @@ -39,12 +39,18 @@ #include <android-base/file.h> #include <android-base/logging.h> #ifdef __ANDROID__ #include <android-base/properties.h> #endif #include <android-base/stringprintf.h> #include <android-base/strings.h> #include <private/android_filesystem_config.h> #include <processgroup/processgroup.h> #ifdef __ANDROID__ using android::base::GetBoolProperty; #endif using android::base::StartsWith; using android::base::StringPrintf; using android::base::WriteStringToFile; Loading @@ -62,11 +68,24 @@ std::once_flag init_path_flag; static const std::string& GetCgroupRootPath() { static std::string cgroup_root_path; std::call_once(init_path_flag, [&]() { // Check if mem cgroup is mounted, only then check for write-access to avoid // SELinux denials #ifdef __ANDROID__ // low-ram devices use per-app memcg by default, unlike high-end ones bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); bool per_app_memcg = GetBoolProperty("ro.config.per_app_memcg", low_ram_device); #else // host does not support Android properties bool per_app_memcg = false; #endif if (per_app_memcg) { // Check if mem cgroup is mounted, only then check for // write-access to avoid SELinux denials cgroup_root_path = (access(MEM_CGROUP_TASKS, F_OK) || access(MEM_CGROUP_PATH, W_OK) ? ACCT_CGROUP_PATH : MEM_CGROUP_PATH); (access(MEM_CGROUP_TASKS, F_OK) || access(MEM_CGROUP_PATH, W_OK) ? ACCT_CGROUP_PATH : MEM_CGROUP_PATH); } else { cgroup_root_path = ACCT_CGROUP_PATH; } }); return cgroup_root_path; } Loading Loading
libmetricslogger/OWNERS +1 −0 Original line number Diff line number Diff line cwren@google.com jhawkins@google.com
libmetricslogger/include/metricslogger/metrics_logger.h +59 −0 Original line number Diff line number Diff line Loading @@ -77,10 +77,44 @@ enum { ACTION_BOOT = 1098, FIELD_PLATFORM_REASON = 1099, FIELD_DURATION_MILLIS = 1304, FIELD_END_BATTERY_PERCENT = 1308, ACTION_HIDDEN_API_ACCESSED = 1391, FIELD_HIDDEN_API_ACCESS_METHOD = 1392, FIELD_HIDDEN_API_ACCESS_DENIED = 1393, FIELD_HIDDEN_API_SIGNATURE = 1394, ACTION_USB_CONNECTOR_CONNECTED = 1422, ACTION_USB_CONNECTOR_DISCONNECTED = 1423, ACTION_USB_AUDIO_CONNECTED = 1424, FIELD_USB_AUDIO_VIDPID = 1425, ACTION_USB_AUDIO_DISCONNECTED = 1426, ACTION_HARDWARE_FAILED = 1427, FIELD_HARDWARE_TYPE = 1428, FIELD_HARDWARE_FAILURE_CODE = 1429, ACTION_PHYSICAL_DROP = 1430, FIELD_CONFIDENCE_PERCENT = 1431, FIELD_ACCEL_MILLI_G = 1432, ACTION_BATTERY_HEALTH = 1433, FIELD_BATTERY_HEALTH_SNAPSHOT_TYPE = 1434, FIELD_BATTERY_TEMPERATURE_DECI_C = 1435, FIELD_BATTERY_VOLTAGE_UV = 1436, FIELD_BATTERY_OPEN_CIRCUIT_VOLTAGE_UV = 1437, ACTION_BATTERY_CHARGE_CYCLES = 1438, FIELD_BATTERY_CHARGE_CYCLES = 1439, ACTION_SLOW_IO = 1442, FIELD_IO_OPERATION_TYPE = 1443, FIELD_IO_OPERATION_COUNT = 1444, ACTION_SPEAKER_IMPEDANCE = 1445, FIELD_SPEAKER_IMPEDANCE_MILLIOHMS = 1446, FIELD_SPEAKER_LOCATION = 1447, FIELD_BATTERY_RESISTANCE_UOHMS = 1448, FIELD_BATTERY_CURRENT_UA = 1449, FIELD_HARDWARE_LOCATION = 1450, ACTION_BATTERY_CAUSED_SHUTDOWN = 1441, }; enum { Loading @@ -94,5 +128,30 @@ enum { ACCESS_METHOD_LINKING = 3, }; enum HardwareType { HARDWARE_UNKNOWN = 0, HARDWARE_MICROPHONE = 1, HARDWARE_CODEC = 2, HARDWARE_SPEAKER = 3, HARDWARE_FINGERPRINT = 4, }; enum HardwareFailureCode { HARDWARE_FAILURE_UNKNOWN = 0, HARDWARE_FAILURE_COMPLETE = 1, HARDWARE_FAILURE_SPEAKER_HIGH_Z = 2, HARDWARE_FAILURE_SPEAKER_SHORT = 3, HARDWARE_FAILURE_FINGERPRINT_SENSOR_BROKEN = 4, HARDWARE_FAILURE_FINGERPRINT_TOO_MANY_DEAD_PIXELS = 5, }; enum IoOperation { IOOP_UNKNOWN = 0, IOOP_READ = 1, IOOP_WRITE = 2, IOOP_UNMAP = 3, IOOP_SYNC = 4, }; } // namespace metricslogger } // namespace android
libprocessgroup/processgroup.cpp +24 −5 Original line number Diff line number Diff line Loading @@ -39,12 +39,18 @@ #include <android-base/file.h> #include <android-base/logging.h> #ifdef __ANDROID__ #include <android-base/properties.h> #endif #include <android-base/stringprintf.h> #include <android-base/strings.h> #include <private/android_filesystem_config.h> #include <processgroup/processgroup.h> #ifdef __ANDROID__ using android::base::GetBoolProperty; #endif using android::base::StartsWith; using android::base::StringPrintf; using android::base::WriteStringToFile; Loading @@ -62,11 +68,24 @@ std::once_flag init_path_flag; static const std::string& GetCgroupRootPath() { static std::string cgroup_root_path; std::call_once(init_path_flag, [&]() { // Check if mem cgroup is mounted, only then check for write-access to avoid // SELinux denials #ifdef __ANDROID__ // low-ram devices use per-app memcg by default, unlike high-end ones bool low_ram_device = GetBoolProperty("ro.config.low_ram", false); bool per_app_memcg = GetBoolProperty("ro.config.per_app_memcg", low_ram_device); #else // host does not support Android properties bool per_app_memcg = false; #endif if (per_app_memcg) { // Check if mem cgroup is mounted, only then check for // write-access to avoid SELinux denials cgroup_root_path = (access(MEM_CGROUP_TASKS, F_OK) || access(MEM_CGROUP_PATH, W_OK) ? ACCT_CGROUP_PATH : MEM_CGROUP_PATH); (access(MEM_CGROUP_TASKS, F_OK) || access(MEM_CGROUP_PATH, W_OK) ? ACCT_CGROUP_PATH : MEM_CGROUP_PATH); } else { cgroup_root_path = ACCT_CGROUP_PATH; } }); return cgroup_root_path; } Loading