Home | History | Annotate | Download | only in os
      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 
     17 syntax = "proto2";
     18 option java_multiple_files = true;
     19 
     20 import "frameworks/base/core/proto/android/os/backtrace.proto";
     21 import "frameworks/base/core/proto/android/os/batterytype.proto";
     22 import "frameworks/base/core/proto/android/os/cpufreq.proto";
     23 import "frameworks/base/core/proto/android/os/cpuinfo.proto";
     24 import "frameworks/base/core/proto/android/os/data.proto";
     25 import "frameworks/base/core/proto/android/os/header.proto";
     26 import "frameworks/base/core/proto/android/os/kernelwake.proto";
     27 import "frameworks/base/core/proto/android/os/metadata.proto";
     28 import "frameworks/base/core/proto/android/os/pagetypeinfo.proto";
     29 import "frameworks/base/core/proto/android/os/procrank.proto";
     30 import "frameworks/base/core/proto/android/os/ps.proto";
     31 import "frameworks/base/core/proto/android/os/statsdata.proto";
     32 import "frameworks/base/core/proto/android/os/system_properties.proto";
     33 import "frameworks/base/core/proto/android/providers/settings.proto";
     34 import "frameworks/base/core/proto/android/server/activitymanagerservice.proto";
     35 import "frameworks/base/core/proto/android/server/alarmmanagerservice.proto";
     36 import "frameworks/base/core/proto/android/server/fingerprint.proto";
     37 import "frameworks/base/core/proto/android/server/jobscheduler.proto";
     38 import "frameworks/base/core/proto/android/server/powermanagerservice.proto";
     39 import "frameworks/base/core/proto/android/server/rolemanagerservice.proto";
     40 import "frameworks/base/core/proto/android/server/windowmanagerservice.proto";
     41 import "frameworks/base/core/proto/android/service/appwidget.proto";
     42 import "frameworks/base/core/proto/android/service/battery.proto";
     43 import "frameworks/base/core/proto/android/service/batterystats.proto";
     44 import "frameworks/base/core/proto/android/service/diskstats.proto";
     45 import "frameworks/base/core/proto/android/service/graphicsstats.proto";
     46 import "frameworks/base/core/proto/android/service/netstats.proto";
     47 import "frameworks/base/core/proto/android/service/notification.proto";
     48 import "frameworks/base/core/proto/android/service/package.proto";
     49 import "frameworks/base/core/proto/android/service/print.proto";
     50 import "frameworks/base/core/proto/android/service/procstats.proto";
     51 import "frameworks/base/core/proto/android/service/restricted_image.proto";
     52 import "frameworks/base/core/proto/android/service/usb.proto";
     53 import "frameworks/base/core/proto/android/util/event_log_tags.proto";
     54 import "frameworks/base/core/proto/android/util/log.proto";
     55 import "frameworks/base/core/proto/android/privacy.proto";
     56 import "frameworks/base/core/proto/android/section.proto";
     57 
     58 package 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.
     62 message 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