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/nfc/nfc_service.proto"; 21import "frameworks/base/core/proto/android/os/backtrace.proto"; 22import "frameworks/base/core/proto/android/os/batterytype.proto"; 23import "frameworks/base/core/proto/android/os/cpufreq.proto"; 24import "frameworks/base/core/proto/android/os/cpuinfo.proto"; 25import "frameworks/base/core/proto/android/os/cpu_usage.proto"; 26import "frameworks/base/core/proto/android/os/data.proto"; 27import "frameworks/base/core/proto/android/os/header.proto"; 28import "frameworks/base/core/proto/android/os/kernelwake.proto"; 29import "frameworks/base/core/proto/android/os/metadata.proto"; 30import "frameworks/base/core/proto/android/os/pagetypeinfo.proto"; 31import "frameworks/base/core/proto/android/os/procrank.proto"; 32import "frameworks/base/core/proto/android/os/ps.proto"; 33import "frameworks/base/core/proto/android/os/statsdata.proto"; 34import "frameworks/base/core/proto/android/os/system_properties.proto"; 35import "frameworks/base/core/proto/android/providers/settings.proto"; 36import "frameworks/base/core/proto/android/server/activitymanagerservice.proto"; 37import "frameworks/base/core/proto/android/server/alarm/alarmmanagerservice.proto"; 38import "frameworks/base/core/proto/android/server/fingerprint.proto"; 39import "frameworks/base/core/proto/android/server/jobscheduler.proto"; 40import "frameworks/base/core/proto/android/server/location/context_hub.proto"; 41import "frameworks/base/core/proto/android/server/powermanagerservice.proto"; 42import "frameworks/base/core/proto/android/server/powerstatsservice.proto"; 43import "frameworks/base/core/proto/android/server/windowmanagerservice.proto"; 44import "frameworks/base/core/proto/android/service/appwidget.proto"; 45import "frameworks/base/core/proto/android/service/battery.proto"; 46import "frameworks/base/core/proto/android/service/batterystats.proto"; 47import "frameworks/base/core/proto/android/service/diskstats.proto"; 48import "frameworks/base/core/proto/android/service/dropbox.proto"; 49import "frameworks/base/core/proto/android/service/graphicsstats.proto"; 50import "frameworks/base/core/proto/android/service/notification.proto"; 51import "frameworks/base/core/proto/android/service/package.proto"; 52import "frameworks/base/core/proto/android/service/print.proto"; 53import "frameworks/base/core/proto/android/service/procstats.proto"; 54import "frameworks/base/core/proto/android/service/restricted_image.proto"; 55import "frameworks/base/core/proto/android/service/sensor_service.proto"; 56import "frameworks/base/core/proto/android/service/usb.proto"; 57import "frameworks/base/core/proto/android/util/event_log_tags.proto"; 58import "frameworks/base/core/proto/android/util/log.proto"; 59import "frameworks/base/core/proto/android/util/textdump.proto"; 60import "frameworks/base/core/proto/android/privacy.proto"; 61import "frameworks/base/core/proto/android/section.proto"; 62import "frameworks/base/proto/src/ipconnectivity.proto"; 63 64package android.os; 65 66// Privacy tag can be marked to override UNSET messages so generic 67// message type can be handled case by case, e.g. GZippedFileProto. 68message IncidentProto { 69 reserved 1001; 70 71 // Incident header from callers 72 repeated IncidentHeaderProto header = 1; 73 // Internal metadata of incidentd 74 optional IncidentMetadata metadata = 2; 75 76 // Device information 77 optional SystemPropertiesProto system_properties = 1000 [ 78 (section).type = SECTION_COMMAND, 79 (section).args = "getprop" 80 ]; 81 82 optional string kernel_version = 1002 [ 83 (section).type = SECTION_FILE, 84 (section).args = "/proc/version", 85 (privacy).dest = DEST_AUTOMATIC 86 ]; 87 88 // Device Logs 89 optional android.util.EventLogTagMapProto event_log_tag_map = 1100 [ 90 (section).type = SECTION_FILE, 91 (section).args = "/system/etc/event-log-tags" 92 ]; 93 94 optional android.util.LogProto main_logs = 1101 [ 95 (section).type = SECTION_LOG, 96 (section).args = "main" 97 ]; 98 99 optional android.util.LogProto radio_logs = 1102 [ 100 (section).type = SECTION_LOG, 101 (section).args = "radio" 102 ]; 103 104 optional android.util.LogProto events_logs = 1103 [ 105 (section).type = SECTION_LOG, 106 (section).args = "events" 107 ]; 108 109 optional android.util.LogProto system_logs = 1104 [ 110 (section).type = SECTION_LOG, 111 (section).args = "system" 112 ]; 113 114 optional android.util.LogProto crash_logs = 1105 [ 115 (section).type = SECTION_LOG, 116 (section).args = "crash" 117 ]; 118 119 optional android.util.LogProto stats_logs = 1106 [ 120 (section).type = SECTION_LOG, 121 (section).args = "stats" 122 ]; 123 124 optional android.util.LogProto security_logs = 1107 [ 125 (section).type = SECTION_LOG, 126 (section).args = "security" 127 ]; 128 129 optional android.util.LogProto kernel_logs = 1108 [ 130 (section).type = SECTION_LOG, 131 (section).args = "kernel" 132 ]; 133 134 // Last logcat sections. 135 // Note that kernel logs is not persisted since it's contained in last kmsg. 136 optional android.util.LogProto last_main_logs = 1109 [ 137 (section).type = SECTION_LOG, 138 (section).args = "main -L" 139 ]; 140 141 optional android.util.LogProto last_radio_logs = 1110 [ 142 (section).type = SECTION_LOG, 143 (section).args = "radio -L" 144 ]; 145 146 optional android.util.LogProto last_events_logs = 1111 [ 147 (section).type = SECTION_LOG, 148 (section).args = "events -L" 149 ]; 150 151 optional android.util.LogProto last_system_logs = 1112 [ 152 (section).type = SECTION_LOG, 153 (section).args = "system -L" 154 ]; 155 156 optional android.util.LogProto last_crash_logs = 1113 [ 157 (section).type = SECTION_LOG, 158 (section).args = "crash -L" 159 ]; 160 161 optional android.util.LogProto last_stats_logs = 1114 [ 162 (section).type = SECTION_LOG, 163 (section).args = "stats -L" 164 ]; 165 166 // security logs is only available with "Device Owner" mode 167 optional android.util.LogProto last_security_logs = 1115 [ 168 (section).type = SECTION_LOG, 169 (section).args = "security -L" 170 ]; 171 172 optional android.util.PersistedLogProto persisted_logs = 1116 [ 173 (section).type = SECTION_COMMAND, 174 (section).args = "/system/bin/sh /system/bin/incident-helper-cmd -l run persisted_logs --limit 10MB" 175 ]; 176 177 // Stack dumps 178 optional android.os.BackTraceProto native_traces = 1200 [ 179 (section).type = SECTION_TOMBSTONE, 180 (section).args = "native" 181 ]; 182 183 optional android.os.BackTraceProto hal_traces = 1201 [ 184 (section).type = SECTION_TOMBSTONE, 185 (section).args = "hal" 186 ]; 187 188 optional android.os.BackTraceProto java_traces = 1202 [ 189 (section).type = SECTION_TOMBSTONE, 190 (section).args = "java" 191 ]; 192 193 // Linux services 194 optional ProcrankProto procrank = 2000 [ 195 // Disable procrank for reasons below: 196 // 1. incidentd can't execute `procrank` because it don't have DAC perms 197 // since it is running as its own uid, no root access. 198 // 2. the same information is able to be accessed by meminfo dumpsys. 199 // 3. leave this one here to show case of how to disable a section 200 // (no removal allowed if you are familiar with PROTOBUF). 201 (section).type = SECTION_NONE, 202 (section).args = "procrank" 203 ]; 204 205 optional PageTypeInfoProto page_type_info = 2001 [ 206 (section).type = SECTION_FILE, 207 (section).args = "/proc/pagetypeinfo" 208 ]; 209 210 optional KernelWakeSourcesProto kernel_wake_sources = 2002 [ 211 (section).type = SECTION_FILE, 212 (section).args = "/d/wakeup_sources" 213 ]; 214 215 optional CpuInfoProto cpu_info = 2003 [ 216 (section).type = SECTION_COMMAND, 217 (section).args = "top -b -n 1 -H -s 6 -o pid,tid,user,pr,ni,%cpu,s,virt,res,pcy,cmd,name" 218 ]; 219 220 optional CpuFreqProto cpu_freq = 2004 [ 221 (section).type = SECTION_FILE, 222 (section).args = "/sys/devices/system/cpu/cpufreq/all_time_in_state" 223 ]; 224 225 optional PsProto processes_and_threads = 2005 [ 226 (section).type = SECTION_COMMAND, 227 (section).args = "ps -A -T -Z -O pri,nice,rtprio,sched,pcy,time" 228 ]; 229 230 optional BatteryTypeProto battery_type = 2006 [ 231 (section).type = SECTION_FILE, 232 (section).args = "/sys/class/power_supply/bms/battery_type" 233 ]; 234 235 optional GZippedFileProto last_kmsg = 2007 [ 236 (section).type = SECTION_GZIP, 237 (section).args = "/sys/fs/pstore/console-ramoops /sys/fs/pstore/console-ramoops-0 /proc/last_kmsg", 238 (privacy).dest = DEST_EXPLICIT 239 ]; 240 241 // System Services 242 optional com.android.server.biometrics.fingerprint.FingerprintServiceDumpProto fingerprint = 3000 [ 243 (section).type = SECTION_DUMPSYS, 244 (section).args = "fingerprint --proto --incident" 245 ]; 246 247 reserved 3001; 248 249 optional android.providers.settings.SettingsServiceDumpProto settings = 3002 [ 250 (section).type = SECTION_DUMPSYS, 251 (section).args = "settings --proto" 252 ]; 253 254 optional android.service.appwidget.AppWidgetServiceDumpProto appwidget = 3003; 255 optional android.service.notification.NotificationServiceDumpProto notification = 3004 [ 256 (section).type = SECTION_DUMPSYS, 257 (section).args = "notification --proto" 258 ]; 259 260 optional android.service.batterystats.BatteryStatsServiceDumpProto batterystats = 3005 [ 261 (section).type = SECTION_DUMPSYS, 262 (section).args = "batterystats --proto" 263 ]; 264 265 optional android.service.battery.BatteryServiceDumpProto battery = 3006 [ 266 (section).type = SECTION_DUMPSYS, 267 (section).args = "battery --proto" 268 ]; 269 270 optional android.service.diskstats.DiskStatsServiceDumpProto diskstats = 3007 [ 271 (section).type = SECTION_DUMPSYS, 272 (section).args = "diskstats --proto" 273 ]; 274 275 optional android.service.pm.PackageServiceDumpProto package = 3008 [ 276 (section).type = SECTION_DUMPSYS, 277 (section).args = "package --proto" 278 ]; 279 280 optional com.android.server.power.PowerManagerServiceDumpProto power = 3009 [ 281 (section).type = SECTION_DUMPSYS, 282 (section).args = "power --proto" 283 ]; 284 285 optional android.service.print.PrintServiceDumpProto print = 3010 [ 286 (section).type = SECTION_DUMPSYS, 287 (section).args = "print --proto" 288 ]; 289 290 optional android.service.procstats.ProcessStatsServiceDumpProto procstats = 3011 [ 291 (section).type = SECTION_DUMPSYS, 292 (section).args = "procstats --proto" 293 ]; 294 295 optional com.android.server.am.ActivityManagerServiceDumpActivitiesProto activities = 3012 [ 296 (section).type = SECTION_DUMPSYS, 297 (section).args = "activity --proto activities" 298 ]; 299 300 optional com.android.server.am.ActivityManagerServiceDumpBroadcastsProto broadcasts = 3013 [ 301 (section).type = SECTION_DUMPSYS, 302 (section).args = "activity --proto broadcasts" 303 ]; 304 305 optional com.android.server.am.ActivityManagerServiceDumpServicesProto amservices = 3014 [ 306 (section).type = SECTION_DUMPSYS, 307 (section).args = "activity --proto service" 308 ]; 309 310 optional com.android.server.am.ActivityManagerServiceDumpProcessesProto amprocesses = 3015 [ 311 (section).type = SECTION_DUMPSYS, 312 (section).args = "activity --proto processes" 313 ]; 314 315 optional com.android.server.alarm.AlarmManagerServiceDumpProto alarm = 3016 [ 316 (section).type = SECTION_DUMPSYS, 317 (section).args = "alarm --proto" 318 ]; 319 320 optional com.android.server.wm.WindowManagerServiceDumpProto window = 3017 [ 321 (section).type = SECTION_DUMPSYS, 322 (section).args = "window --proto" 323 ]; 324 325 optional com.android.server.am.MemInfoDumpProto meminfo = 3018 [ 326 (section).type = SECTION_DUMPSYS, 327 (section).args = "meminfo -a --proto" 328 ]; 329 330 optional android.service.GraphicsStatsServiceDumpProto graphicsstats = 3019 [ 331 (section).type = SECTION_DUMPSYS, 332 (section).args = "graphicsstats --proto" 333 ]; 334 335 optional com.android.server.job.JobSchedulerServiceDumpProto jobscheduler = 3020 [ 336 (section).type = SECTION_DUMPSYS, 337 (section).args = "jobscheduler --proto" 338 ]; 339 340 optional android.service.usb.UsbServiceDumpProto usb = 3021 [ 341 (section).type = SECTION_DUMPSYS, 342 (section).args = "usb --proto" 343 ]; 344 345 // The history can be large and may cause issues in consumers, so put the 346 // history in a separate section to compensate. 347 optional android.service.batterystats.BatteryStatsServiceDumpHistoryProto battery_history = 3022 [ 348 (section).type = SECTION_DUMPSYS, 349 (section).args = "batterystats --proto --history", 350 (section).userdebug_and_eng_only = true 351 ]; 352 353 optional android.os.StatsDataDumpProto stats_data = 3023 [ 354 (section).type = SECTION_DUMPSYS, 355 (section).args = "stats --proto", 356 (section).userdebug_and_eng_only = true 357 ]; 358 359 reserved 3024; 360 361 optional android.service.restricted_image.RestrictedImagesDumpProto restricted_images = 3025 [ 362 (section).type = SECTION_DUMPSYS, 363 (section).userdebug_and_eng_only = true, 364 (section).args = "incidentcompanion --restricted_image" 365 ]; 366 367 // System trace as a serialized protobuf. 368 optional bytes system_trace = 3026 [ 369 (section).type = SECTION_FILE, 370 (section).args = "/data/misc/perfetto-traces/incident-trace", 371 (privacy).dest = DEST_AUTOMATIC 372 ]; 373 374 // Dropbox entries split by tags. 375 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_data_app_crash = 3027 [ 376 (section).type = SECTION_DUMPSYS, 377 (section).args = "dropbox --proto data_app_crash" 378 ]; 379 380 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_data_app_anr = 3028 [ 381 (section).type = SECTION_DUMPSYS, 382 (section).args = "dropbox --proto data_app_anr" 383 ]; 384 385 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_data_app_native_crash = 3029 [ 386 (section).type = SECTION_DUMPSYS, 387 (section).args = "dropbox --proto data_app_native_crash" 388 ]; 389 390 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_data_app_strictmode = 3030 [ 391 (section).type = SECTION_DUMPSYS, 392 (section).args = "dropbox --proto data_app_strictmode" 393 ]; 394 395 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_data_app_wtf = 3031 [ 396 (section).type = SECTION_DUMPSYS, 397 (section).args = "dropbox --proto data_app_wtf" 398 ]; 399 400 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_app_crash = 3032 [ 401 (section).type = SECTION_DUMPSYS, 402 (section).args = "dropbox --proto system_app_crash" 403 ]; 404 405 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_app_anr = 3033 [ 406 (section).type = SECTION_DUMPSYS, 407 (section).args = "dropbox --proto system_app_anr" 408 ]; 409 410 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_app_native_crash = 3034 [ 411 (section).type = SECTION_DUMPSYS, 412 (section).args = "dropbox --proto system_app_native_crash" 413 ]; 414 415 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_app_strictmode = 3035 [ 416 (section).type = SECTION_DUMPSYS, 417 (section).args = "dropbox --proto system_app_strictmode" 418 ]; 419 420 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_app_wtf = 3036 [ 421 (section).type = SECTION_DUMPSYS, 422 (section).args = "dropbox --proto system_app_wtf" 423 ]; 424 425 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_crash = 3037 [ 426 (section).type = SECTION_DUMPSYS, 427 (section).args = "dropbox --proto system_server_crash" 428 ]; 429 430 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_anr = 3038 [ 431 (section).type = SECTION_DUMPSYS, 432 (section).args = "dropbox --proto system_server_anr" 433 ]; 434 435 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_native_crash = 3039 [ 436 (section).type = SECTION_DUMPSYS, 437 (section).args = "dropbox --proto system_server_native_crash" 438 ]; 439 440 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_lowmem= 3040 [ 441 (section).type = SECTION_DUMPSYS, 442 (section).args = "dropbox --proto system_server_lowmem" 443 ]; 444 445 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_strictmode = 3041 [ 446 (section).type = SECTION_DUMPSYS, 447 (section).args = "dropbox --proto system_server_strictmode" 448 ]; 449 450 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_watchdog = 3042 [ 451 (section).type = SECTION_DUMPSYS, 452 (section).args = "dropbox --proto system_server_watchdog" 453 ]; 454 455 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_server_wtf = 3043 [ 456 (section).type = SECTION_DUMPSYS, 457 (section).args = "dropbox --proto system_server_wtf" 458 ]; 459 460 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_recovery_log = 3044 [ 461 (section).type = SECTION_DUMPSYS, 462 (section).args = "dropbox --proto SYSTEM_RECOVERY_LOG" 463 ]; 464 465 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_system_tombstone = 3045 [ 466 (section).type = SECTION_DUMPSYS, 467 (section).args = "dropbox --proto SYSTEM_TOMBSTONE" 468 ]; 469 470 optional android.service.dropbox.DropBoxManagerServiceDumpProto dropbox_subsystem_restart = 3046 [ 471 (section).type = SECTION_DUMPSYS, 472 (section).args = "dropbox --proto SubsystemRestart" 473 ]; 474 475 optional CpuUsageProto process_cpu_usage = 3047 [ 476 (section).type = SECTION_DUMPSYS, 477 (section).args = "cpuinfo --proto" 478 ]; 479 480 optional .clearcut.connectivity.IpConnectivityLog ip_connectivity_metrics = 3049 [ 481 (section).type = SECTION_DUMPSYS, 482 (section).args = "connmetrics --proto" 483 ]; 484 485 // Deprecated BluetoothManagerServiceDumpProto 486 reserved 3050; 487 488 optional com.android.server.location.ContextHubServiceProto context_hub = 3051 [ 489 (section).type = SECTION_DUMPSYS, 490 (section).args = "contexthub --proto" 491 ]; 492 493 optional com.android.nfc.NfcServiceDumpProto nfc_service = 3052 [ 494 (section).type = SECTION_DUMPSYS, 495 (section).args = "nfc --proto" 496 ]; 497 498 optional android.service.SensorServiceProto sensor_service = 3053 [ 499 (section).type = SECTION_DUMPSYS, 500 (section).args = "sensorservice --proto" 501 ]; 502 503 optional com.android.server.powerstats.PowerStatsServiceMeterProto powerstats_meter = 3054 [ 504 (section).type = SECTION_DUMPSYS, 505 (section).args = "powerstats --proto meter" 506 ]; 507 508 optional com.android.server.powerstats.PowerStatsServiceModelProto powerstats_model = 3055 [ 509 (section).type = SECTION_DUMPSYS, 510 (section).args = "powerstats --proto model" 511 ]; 512 513 optional com.android.server.powerstats.PowerStatsServiceResidencyProto powerstats_residency = 3056 [ 514 (section).type = SECTION_DUMPSYS, 515 (section).args = "powerstats --proto residency" 516 ]; 517 518 // Dumps in text format (on userdebug and eng builds only): 4000 ~ 4999 519 optional android.util.TextDumpProto textdump_wifi = 4000 [ 520 (section).type = SECTION_TEXT_DUMPSYS, 521 (section).args = "wifi" 522 ]; 523 524 optional android.util.TextDumpProto textdump_bluetooth = 4001 [ 525 (section).type = SECTION_TEXT_DUMPSYS, 526 (section).args = "bluetooth_manager" 527 ]; 528 529 // Reserved for OEMs. 530 extensions 50000 to 100000; 531} 532