• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
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