1/* 2 * Copyright (C) 2016 The Android Open Source Project 3 * 4 * Licensed under the Apache License, Version 2.0 (the "License"); 5 * you may not use this file except in compliance with the License. 6 * You may obtain a copy of the License at 7 * 8 * http://www.apache.org/licenses/LICENSE-2.0 9 * 10 * Unless required by applicable law or agreed to in writing, software 11 * distributed under the License is distributed on an "AS IS" BASIS, 12 * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 13 * See the License for the specific language governing permissions and 14 * limitations under the License. 15 */ 16 17syntax = "proto2"; 18option java_multiple_files = true; 19 20import "frameworks/base/core/proto/android/os/backtrace.proto"; 21import "frameworks/base/core/proto/android/os/batterytype.proto"; 22import "frameworks/base/core/proto/android/os/cpufreq.proto"; 23import "frameworks/base/core/proto/android/os/cpuinfo.proto"; 24import "frameworks/base/core/proto/android/os/data.proto"; 25import "frameworks/base/core/proto/android/os/header.proto"; 26import "frameworks/base/core/proto/android/os/kernelwake.proto"; 27import "frameworks/base/core/proto/android/os/metadata.proto"; 28import "frameworks/base/core/proto/android/os/pagetypeinfo.proto"; 29import "frameworks/base/core/proto/android/os/procrank.proto"; 30import "frameworks/base/core/proto/android/os/ps.proto"; 31import "frameworks/base/core/proto/android/os/statsdata.proto"; 32import "frameworks/base/core/proto/android/os/system_properties.proto"; 33import "frameworks/base/core/proto/android/providers/settings.proto"; 34import "frameworks/base/core/proto/android/server/activitymanagerservice.proto"; 35import "frameworks/base/core/proto/android/server/alarmmanagerservice.proto"; 36import "frameworks/base/core/proto/android/server/fingerprint.proto"; 37import "frameworks/base/core/proto/android/server/jobscheduler.proto"; 38import "frameworks/base/core/proto/android/server/powermanagerservice.proto"; 39import "frameworks/base/core/proto/android/server/rolemanagerservice.proto"; 40import "frameworks/base/core/proto/android/server/windowmanagerservice.proto"; 41import "frameworks/base/core/proto/android/service/appwidget.proto"; 42import "frameworks/base/core/proto/android/service/battery.proto"; 43import "frameworks/base/core/proto/android/service/batterystats.proto"; 44import "frameworks/base/core/proto/android/service/diskstats.proto"; 45import "frameworks/base/core/proto/android/service/graphicsstats.proto"; 46import "frameworks/base/core/proto/android/service/netstats.proto"; 47import "frameworks/base/core/proto/android/service/notification.proto"; 48import "frameworks/base/core/proto/android/service/package.proto"; 49import "frameworks/base/core/proto/android/service/print.proto"; 50import "frameworks/base/core/proto/android/service/procstats.proto"; 51import "frameworks/base/core/proto/android/service/restricted_image.proto"; 52import "frameworks/base/core/proto/android/service/usb.proto"; 53import "frameworks/base/core/proto/android/util/event_log_tags.proto"; 54import "frameworks/base/core/proto/android/util/log.proto"; 55import "frameworks/base/core/proto/android/privacy.proto"; 56import "frameworks/base/core/proto/android/section.proto"; 57 58package android.os; 59 60// Privacy tag can be marked to override UNSET messages so generic 61// message type can be handled case by case, e.g. GZippedFileProto. 62message IncidentProto { 63 reserved 1001; 64 65 // Incident header from callers 66 repeated IncidentHeaderProto header = 1; 67 // Internal metadata of incidentd 68 optional IncidentMetadata metadata = 2; 69 70 // Device information 71 optional SystemPropertiesProto system_properties = 1000 [ 72 (section).type = SECTION_COMMAND, 73 (section).args = "getprop" 74 ]; 75 76 optional string kernel_version = 1002 [ 77 (section).type = SECTION_FILE, 78 (section).args = "/proc/version", 79 (privacy).dest = DEST_AUTOMATIC 80 ]; 81 82 // Device Logs 83 optional android.util.EventLogTagMapProto event_log_tag_map = 1100 [ 84 (section).type = SECTION_FILE, 85 (section).args = "/system/etc/event-log-tags" 86 ]; 87 88 optional android.util.LogProto main_logs = 1101 [ 89 (section).type = SECTION_LOG, 90 (section).args = "LOG_ID_MAIN" 91 ]; 92 93 optional android.util.LogProto radio_logs = 1102 [ 94 (section).type = SECTION_LOG, 95 (section).args = "LOG_ID_RADIO" 96 ]; 97 98 optional android.util.LogProto events_logs = 1103 [ 99 (section).type = SECTION_LOG, 100 (section).args = "LOG_ID_EVENTS" 101 ]; 102 103 optional android.util.LogProto system_logs = 1104 [ 104 (section).type = SECTION_LOG, 105 (section).args = "LOG_ID_SYSTEM" 106 ]; 107 108 optional android.util.LogProto crash_logs = 1105 [ 109 (section).type = SECTION_LOG, 110 (section).args = "LOG_ID_CRASH" 111 ]; 112 113 optional android.util.LogProto stats_logs = 1106 [ 114 (section).type = SECTION_LOG, 115 (section).args = "LOG_ID_STATS" 116 ]; 117 118 optional android.util.LogProto security_logs = 1107 [ 119 (section).type = SECTION_LOG, 120 (section).args = "LOG_ID_SECURITY" 121 ]; 122 123 optional android.util.LogProto kernel_logs = 1108 [ 124 (section).type = SECTION_LOG, 125 (section).args = "LOG_ID_KERNEL" 126 ]; 127 128 // Stack dumps 129 optional android.os.BackTraceProto native_traces = 1200 [ 130 (section).type = SECTION_TOMBSTONE, 131 (section).args = "native" 132 ]; 133 134 optional android.os.BackTraceProto hal_traces = 1201 [ 135 (section).type = SECTION_TOMBSTONE, 136 (section).args = "hal" 137 ]; 138 139 optional android.os.BackTraceProto java_traces = 1202 [ 140 (section).type = SECTION_TOMBSTONE, 141 (section).args = "java" 142 ]; 143 144 // Linux services 145 optional ProcrankProto procrank = 2000 [ 146 // Disable procrank for reasons below: 147 // 1. incidentd can't execute `procrank` because it don't have DAC perms 148 // since it is running as its own uid, no root access. 149 // 2. the same information is able to be accessed by meminfo dumpsys. 150 // 3. leave this one here to show case of how to disable a section 151 // (no removal allowed if you are familiar with PROTOBUF). 152 (section).type = SECTION_NONE, 153 (section).args = "procrank" 154 ]; 155 156 optional PageTypeInfoProto page_type_info = 2001 [ 157 (section).type = SECTION_FILE, 158 (section).args = "/proc/pagetypeinfo" 159 ]; 160 161 optional KernelWakeSourcesProto kernel_wake_sources = 2002 [ 162 (section).type = SECTION_FILE, 163 (section).args = "/d/wakeup_sources" 164 ]; 165 166 optional CpuInfoProto cpu_info = 2003 [ 167 (section).type = SECTION_COMMAND, 168 (section).args = "top -b -n 1 -H -s 6 -o pid,tid,user,pr,ni,%cpu,s,virt,res,pcy,cmd,name" 169 ]; 170 171 optional CpuFreqProto cpu_freq = 2004 [ 172 (section).type = SECTION_FILE, 173 (section).args = "/sys/devices/system/cpu/cpufreq/all_time_in_state" 174 ]; 175 176 optional PsProto processes_and_threads = 2005 [ 177 (section).type = SECTION_COMMAND, 178 (section).args = "ps -A -T -Z -O pri,nice,rtprio,sched,pcy,time" 179 ]; 180 181 optional BatteryTypeProto battery_type = 2006 [ 182 (section).type = SECTION_FILE, 183 (section).args = "/sys/class/power_supply/bms/battery_type" 184 ]; 185 186 optional GZippedFileProto last_kmsg = 2007 [ 187 (section).type = SECTION_GZIP, 188 (section).args = "/sys/fs/pstore/console-ramoops /sys/fs/pstore/console-ramoops-0 /proc/last_kmsg", 189 (privacy).dest = DEST_EXPLICIT 190 ]; 191 192 // System Services 193 optional com.android.server.biometrics.fingerprint.FingerprintServiceDumpProto fingerprint = 3000 [ 194 (section).type = SECTION_DUMPSYS, 195 (section).args = "fingerprint --proto --incident" 196 ]; 197 198 optional android.service.NetworkStatsServiceDumpProto netstats = 3001 [ 199 (section).type = SECTION_DUMPSYS, 200 (section).args = "netstats --proto" 201 ]; 202 203 optional android.providers.settings.SettingsServiceDumpProto settings = 3002 [ 204 (section).type = SECTION_DUMPSYS, 205 (section).args = "settings --proto" 206 ]; 207 208 optional android.service.appwidget.AppWidgetServiceDumpProto appwidget = 3003; 209 optional android.service.notification.NotificationServiceDumpProto notification = 3004 [ 210 (section).type = SECTION_DUMPSYS, 211 (section).args = "notification --proto" 212 ]; 213 214 optional android.service.batterystats.BatteryStatsServiceDumpProto batterystats = 3005 [ 215 (section).type = SECTION_DUMPSYS, 216 (section).args = "batterystats --proto" 217 ]; 218 219 optional android.service.battery.BatteryServiceDumpProto battery = 3006 [ 220 (section).type = SECTION_DUMPSYS, 221 (section).args = "battery --proto" 222 ]; 223 224 optional android.service.diskstats.DiskStatsServiceDumpProto diskstats = 3007 [ 225 (section).type = SECTION_DUMPSYS, 226 (section).args = "diskstats --proto" 227 ]; 228 229 optional android.service.pm.PackageServiceDumpProto package = 3008 [ 230 (section).type = SECTION_DUMPSYS, 231 (section).args = "package --proto" 232 ]; 233 234 optional com.android.server.power.PowerManagerServiceDumpProto power = 3009 [ 235 (section).type = SECTION_DUMPSYS, 236 (section).args = "power --proto" 237 ]; 238 239 optional android.service.print.PrintServiceDumpProto print = 3010 [ 240 (section).type = SECTION_DUMPSYS, 241 (section).args = "print --proto" 242 ]; 243 244 optional android.service.procstats.ProcessStatsServiceDumpProto procstats = 3011 [ 245 (section).type = SECTION_DUMPSYS, 246 (section).args = "procstats --proto" 247 ]; 248 249 optional com.android.server.am.ActivityManagerServiceDumpActivitiesProto activities = 3012 [ 250 (section).type = SECTION_DUMPSYS, 251 (section).args = "activity --proto activities" 252 ]; 253 254 optional com.android.server.am.ActivityManagerServiceDumpBroadcastsProto broadcasts = 3013 [ 255 (section).type = SECTION_DUMPSYS, 256 (section).args = "activity --proto broadcasts" 257 ]; 258 259 optional com.android.server.am.ActivityManagerServiceDumpServicesProto amservices = 3014 [ 260 (section).type = SECTION_DUMPSYS, 261 (section).args = "activity --proto service" 262 ]; 263 264 optional com.android.server.am.ActivityManagerServiceDumpProcessesProto amprocesses = 3015 [ 265 (section).type = SECTION_DUMPSYS, 266 (section).args = "activity --proto processes" 267 ]; 268 269 optional com.android.server.AlarmManagerServiceDumpProto alarm = 3016 [ 270 (section).type = SECTION_DUMPSYS, 271 (section).args = "alarm --proto" 272 ]; 273 274 optional com.android.server.wm.WindowManagerServiceDumpProto window = 3017 [ 275 (section).type = SECTION_DUMPSYS, 276 (section).args = "window --proto" 277 ]; 278 279 optional com.android.server.am.MemInfoDumpProto meminfo = 3018 [ 280 (section).type = SECTION_DUMPSYS, 281 (section).args = "meminfo -a --proto" 282 ]; 283 284 optional android.service.GraphicsStatsServiceDumpProto graphicsstats = 3019 [ 285 (section).type = SECTION_DUMPSYS, 286 (section).args = "graphicsstats --proto" 287 ]; 288 289 optional com.android.server.job.JobSchedulerServiceDumpProto jobscheduler = 3020 [ 290 (section).type = SECTION_DUMPSYS, 291 (section).args = "jobscheduler --proto" 292 ]; 293 294 optional android.service.usb.UsbServiceDumpProto usb = 3021 [ 295 (section).type = SECTION_DUMPSYS, 296 (section).args = "usb --proto" 297 ]; 298 299 // The history can be large and may cause issues in consumers, so put the 300 // history in a separate section to compensate. 301 optional android.service.batterystats.BatteryStatsServiceDumpHistoryProto battery_history = 3022 [ 302 (section).type = SECTION_DUMPSYS, 303 (section).args = "batterystats --proto --history", 304 (section).userdebug_and_eng_only = true 305 ]; 306 307 optional android.os.StatsDataDumpProto stats_data = 3023 [ 308 (section).type = SECTION_DUMPSYS, 309 (section).args = "stats --proto", 310 (section).userdebug_and_eng_only = true 311 ]; 312 313 optional com.android.server.role.RoleManagerServiceDumpProto role = 3024 [ 314 (section).type = SECTION_DUMPSYS, 315 (section).args = "role --proto" 316 ]; 317 318 optional android.service.restricted_image.RestrictedImagesDumpProto restricted_images = 3025 [ 319 (section).type = SECTION_DUMPSYS, 320 (section).userdebug_and_eng_only = true, 321 (section).args = "incidentcompanion --restricted_image" 322 ]; 323 324 // System trace as a serialized protobuf. 325 optional bytes system_trace = 3026 [ 326 (section).type = SECTION_FILE, 327 (section).args = "/data/misc/perfetto-traces/incident-trace", 328 (privacy).dest = DEST_AUTOMATIC, 329 (section).userdebug_and_eng_only = true 330 ]; 331 332 // Reserved for OEMs. 333 extensions 50000 to 100000; 334} 335