1*d870e050SAndroid Build Coastguard Worker// Copyright (C) 2018 The Android Open Source Project 2*d870e050SAndroid Build Coastguard Worker// 3*d870e050SAndroid Build Coastguard Worker// Licensed under the Apache License, Version 2.0 (the "License"); 4*d870e050SAndroid Build Coastguard Worker// you may not use this file except in compliance with the License. 5*d870e050SAndroid Build Coastguard Worker// You may obtain a copy of the License at 6*d870e050SAndroid Build Coastguard Worker// 7*d870e050SAndroid Build Coastguard Worker// http://www.apache.org/licenses/LICENSE-2.0 8*d870e050SAndroid Build Coastguard Worker// 9*d870e050SAndroid Build Coastguard Worker// Unless required by applicable law or agreed to in writing, software 10*d870e050SAndroid Build Coastguard Worker// distributed under the License is distributed on an "AS IS" BASIS, 11*d870e050SAndroid Build Coastguard Worker// WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. 12*d870e050SAndroid Build Coastguard Worker// See the License for the specific language governing permissions and 13*d870e050SAndroid Build Coastguard Worker// limitations under the License. 14*d870e050SAndroid Build Coastguard Worker 15*d870e050SAndroid Build Coastguard Workersyntax = "proto2"; 16*d870e050SAndroid Build Coastguard Worker 17*d870e050SAndroid Build Coastguard Worker// This file must be synchronized between 18*d870e050SAndroid Build Coastguard Worker// Emulator (branch aosp/emu-master-dev): 19*d870e050SAndroid Build Coastguard Worker// external/qemu/android/android-emu/android/snapshot/proto/snapshot.proto 20*d870e050SAndroid Build Coastguard Worker// 21*d870e050SAndroid Build Coastguard Worker// Android Studio (branch goog/studio-master-dev): 22*d870e050SAndroid Build Coastguard Worker// tools/adt/idea/android/src/com/android/emulator/snapshot.proto 23*d870e050SAndroid Build Coastguard Worker// 24*d870e050SAndroid Build Coastguard Worker// If you modify one, please modify the other. 25*d870e050SAndroid Build Coastguard Worker 26*d870e050SAndroid Build Coastguard Workerpackage emulator_snapshot; 27*d870e050SAndroid Build Coastguard Worker 28*d870e050SAndroid Build Coastguard Workeroption java_package = "com.android.emulator.snapshot"; 29*d870e050SAndroid Build Coastguard Worker 30*d870e050SAndroid Build Coastguard Workermessage Image { 31*d870e050SAndroid Build Coastguard Worker enum Type { 32*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_UNKNOWN = 0; 33*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_KERNEL = 1; 34*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_KERNEL_RANCHU = 2; 35*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_SYSTEM = 3; 36*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_SYSTEM_COPY = 4; 37*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_DATA = 5; 38*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_DATA_COPY = 6; 39*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_RAMDISK = 7; 40*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_SDCARD = 8; 41*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_CACHE = 9; 42*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_VENDOR = 10; 43*d870e050SAndroid Build Coastguard Worker IMAGE_TYPE_ENCRYPTION_KEY = 11; 44*d870e050SAndroid Build Coastguard Worker } 45*d870e050SAndroid Build Coastguard Worker 46*d870e050SAndroid Build Coastguard Worker optional Type type = 1; 47*d870e050SAndroid Build Coastguard Worker optional string path = 2; 48*d870e050SAndroid Build Coastguard Worker optional bool present = 3; 49*d870e050SAndroid Build Coastguard Worker optional int64 size = 4; 50*d870e050SAndroid Build Coastguard Worker optional int64 modification_time = 5; 51*d870e050SAndroid Build Coastguard Worker} 52*d870e050SAndroid Build Coastguard Worker 53*d870e050SAndroid Build Coastguard Workermessage Host { 54*d870e050SAndroid Build Coastguard Worker optional string gpu_driver = 4; 55*d870e050SAndroid Build Coastguard Worker optional int32 hypervisor = 5; 56*d870e050SAndroid Build Coastguard Worker} 57*d870e050SAndroid Build Coastguard Worker 58*d870e050SAndroid Build Coastguard Workermessage Config { 59*d870e050SAndroid Build Coastguard Worker // Features are int32, not enums here to make sure we don't have to update 60*d870e050SAndroid Build Coastguard Worker // one more protobuf definition with every single new feature flag, even 61*d870e050SAndroid Build Coastguard Worker // when the code doesn't really care about the actual meaning for them, 62*d870e050SAndroid Build Coastguard Worker // only for the values. 63*d870e050SAndroid Build Coastguard Worker repeated int32 enabled_features = 1; 64*d870e050SAndroid Build Coastguard Worker 65*d870e050SAndroid Build Coastguard Worker // This holds the renderer; int32 for the same reason as |enabled_features|. 66*d870e050SAndroid Build Coastguard Worker optional int32 selected_renderer = 2; 67*d870e050SAndroid Build Coastguard Worker 68*d870e050SAndroid Build Coastguard Worker optional int32 cpu_core_count = 3; 69*d870e050SAndroid Build Coastguard Worker optional int64 ram_size_bytes = 4; 70*d870e050SAndroid Build Coastguard Worker} 71*d870e050SAndroid Build Coastguard Worker 72*d870e050SAndroid Build Coastguard Workermessage SaveStats { 73*d870e050SAndroid Build Coastguard Worker // Type of save 74*d870e050SAndroid Build Coastguard Worker // 0: non-incremental 75*d870e050SAndroid Build Coastguard Worker // 1: incremental 76*d870e050SAndroid Build Coastguard Worker optional uint32 incremental = 1; 77*d870e050SAndroid Build Coastguard Worker // Time taken to save. 78*d870e050SAndroid Build Coastguard Worker optional uint64 duration = 2; 79*d870e050SAndroid Build Coastguard Worker // How many changed bytes in RAM. 80*d870e050SAndroid Build Coastguard Worker optional uint64 ram_changed_bytes = 3; 81*d870e050SAndroid Build Coastguard Worker} 82*d870e050SAndroid Build Coastguard Worker 83*d870e050SAndroid Build Coastguard Workermessage Snapshot { 84*d870e050SAndroid Build Coastguard Worker // Update every time when introducing some breaking changes that make the 85*d870e050SAndroid Build Coastguard Worker // previous loading code break when trying to load the new snapshot. 86*d870e050SAndroid Build Coastguard Worker // NOTE: if the old code is fine with just skipping the new fields or not 87*d870e050SAndroid Build Coastguard Worker // getting the meaning of new values, |version| should remain 88*d870e050SAndroid Build Coastguard Worker // unchanged. 89*d870e050SAndroid Build Coastguard Worker optional int32 version = 1; 90*d870e050SAndroid Build Coastguard Worker 91*d870e050SAndroid Build Coastguard Worker // Purely informative: when this snapshot was created, Unix timestamp. 92*d870e050SAndroid Build Coastguard Worker optional int64 creation_time = 2; 93*d870e050SAndroid Build Coastguard Worker 94*d870e050SAndroid Build Coastguard Worker // List of mounted disk images used during the snapshot creation. 95*d870e050SAndroid Build Coastguard Worker repeated Image images = 3; 96*d870e050SAndroid Build Coastguard Worker 97*d870e050SAndroid Build Coastguard Worker // Description of the host machine properties needed to load this snapshot. 98*d870e050SAndroid Build Coastguard Worker optional Host host = 4; 99*d870e050SAndroid Build Coastguard Worker 100*d870e050SAndroid Build Coastguard Worker // Description of the emulator configuration needed for this snapshot. 101*d870e050SAndroid Build Coastguard Worker // NOTE: try not to duplicate the configuration that's already in 102*d870e050SAndroid Build Coastguard Worker // hardware-qemu.ini; only add what's either not there or what 103*d870e050SAndroid Build Coastguard Worker // could've been overridden during process initialization. 104*d870e050SAndroid Build Coastguard Worker optional Config config = 5; 105*d870e050SAndroid Build Coastguard Worker 106*d870e050SAndroid Build Coastguard Worker // Set if the snapshot failed to load during the last attempt. 107*d870e050SAndroid Build Coastguard Worker // Code is up to the application to define, with 0 meaning 'not failed' just 108*d870e050SAndroid Build Coastguard Worker // in case. 109*d870e050SAndroid Build Coastguard Worker optional int64 failed_to_load_reason_code = 7; 110*d870e050SAndroid Build Coastguard Worker 111*d870e050SAndroid Build Coastguard Worker // Set if data image is mounted. 112*d870e050SAndroid Build Coastguard Worker // User build and userdebug build mount data partition at different time. 113*d870e050SAndroid Build Coastguard Worker // But it should be done before boot finished, so this field is very likely 114*d870e050SAndroid Build Coastguard Worker // to be true. 115*d870e050SAndroid Build Coastguard Worker // We snapshot it here just in case someday we support snapshot during 116*d870e050SAndroid Build Coastguard Worker // booting. 117*d870e050SAndroid Build Coastguard Worker optional bool guest_data_partition_mounted = 8; 118*d870e050SAndroid Build Coastguard Worker 119*d870e050SAndroid Build Coastguard Worker // Emulator rotation angle, in right angles (e.g. 1 is 90 degrees, 2 is 180 120*d870e050SAndroid Build Coastguard Worker // etc). 121*d870e050SAndroid Build Coastguard Worker optional int32 rotation = 9; 122*d870e050SAndroid Build Coastguard Worker 123*d870e050SAndroid Build Coastguard Worker // Number of invalid loads / crashes that happened under this snapshot. 124*d870e050SAndroid Build Coastguard Worker optional int32 invalid_loads = 10; 125*d870e050SAndroid Build Coastguard Worker 126*d870e050SAndroid Build Coastguard Worker // Number of successful loads. 127*d870e050SAndroid Build Coastguard Worker optional int32 successful_loads = 11; 128*d870e050SAndroid Build Coastguard Worker 129*d870e050SAndroid Build Coastguard Worker // The name given to the snapshot by the user. Independent of the 130*d870e050SAndroid Build Coastguard Worker // file name. 131*d870e050SAndroid Build Coastguard Worker optional string logical_name = 12; 132*d870e050SAndroid Build Coastguard Worker 133*d870e050SAndroid Build Coastguard Worker // The file name of this snapshot's parent. The parent is the 134*d870e050SAndroid Build Coastguard Worker // snapshot that was loaded into the AVD prior to this snapshot 135*d870e050SAndroid Build Coastguard Worker // being taken 136*d870e050SAndroid Build Coastguard Worker optional string parent = 13; 137*d870e050SAndroid Build Coastguard Worker 138*d870e050SAndroid Build Coastguard Worker // Arbitrary description added by the user 139*d870e050SAndroid Build Coastguard Worker optional string description = 14; 140*d870e050SAndroid Build Coastguard Worker 141*d870e050SAndroid Build Coastguard Worker // Record of save stats. 142*d870e050SAndroid Build Coastguard Worker repeated SaveStats save_stats = 15; 143*d870e050SAndroid Build Coastguard Worker 144*d870e050SAndroid Build Coastguard Worker // Folded state. 145*d870e050SAndroid Build Coastguard Worker optional bool folded = 16; 146*d870e050SAndroid Build Coastguard Worker 147*d870e050SAndroid Build Coastguard Worker // Emulator boot parameters 148*d870e050SAndroid Build Coastguard Worker repeated string launch_parameters = 17; 149*d870e050SAndroid Build Coastguard Worker 150*d870e050SAndroid Build Coastguard Worker // Emulator build ID 151*d870e050SAndroid Build Coastguard Worker optional string emulator_build_id = 18; 152*d870e050SAndroid Build Coastguard Worker 153*d870e050SAndroid Build Coastguard Worker // System image build ID 154*d870e050SAndroid Build Coastguard Worker optional string system_image_build_id = 19; 155*d870e050SAndroid Build Coastguard Worker 156*d870e050SAndroid Build Coastguard Worker // True if emulator was built with gfxstream backend 157*d870e050SAndroid Build Coastguard Worker optional bool gfxstream = 20; 158*d870e050SAndroid Build Coastguard Worker 159*d870e050SAndroid Build Coastguard Worker // resizable config 160*d870e050SAndroid Build Coastguard Worker optional int32 resizable_display = 21; 161*d870e050SAndroid Build Coastguard Worker} 162