blob: 0fb83ac0d5319fb618ffc1982f5317c5fbd04ef5 [file] [log] [blame]
Jiyong Park9b8253b2021-06-28 18:37:26 +09001// Signature format: 2.0
Alan Stokesca0d27e2022-10-03 11:26:13 +01002package android.system.virtualmachine {
3
4 public class VirtualMachine implements java.lang.AutoCloseable {
5 method public void clearCallback();
Alan Stokesa4e2a4a2022-11-28 12:04:39 +00006 method public void close();
Alan Stokes10c47672022-12-13 17:17:08 +00007 method @NonNull public android.os.IBinder connectToVsockServer(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException;
8 method @NonNull public android.os.ParcelFileDescriptor connectVsock(@IntRange(from=android.system.virtualmachine.VirtualMachine.MIN_VSOCK_PORT, to=android.system.virtualmachine.VirtualMachine.MAX_VSOCK_PORT) long) throws android.system.virtualmachine.VirtualMachineException;
Alan Stokesca0d27e2022-10-03 11:26:13 +01009 method @NonNull public android.system.virtualmachine.VirtualMachineConfig getConfig();
10 method @NonNull public java.io.InputStream getConsoleOutput() throws android.system.virtualmachine.VirtualMachineException;
11 method @NonNull public java.io.InputStream getLogOutput() throws android.system.virtualmachine.VirtualMachineException;
12 method @NonNull public String getName();
13 method public int getStatus();
14 method @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) public void run() throws android.system.virtualmachine.VirtualMachineException;
15 method public void setCallback(@NonNull java.util.concurrent.Executor, @NonNull android.system.virtualmachine.VirtualMachineCallback);
16 method @NonNull public android.system.virtualmachine.VirtualMachineConfig setConfig(@NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
17 method public void stop() throws android.system.virtualmachine.VirtualMachineException;
18 method @NonNull public android.system.virtualmachine.VirtualMachineDescriptor toDescriptor() throws android.system.virtualmachine.VirtualMachineException;
19 field public static final String MANAGE_VIRTUAL_MACHINE_PERMISSION = "android.permission.MANAGE_VIRTUAL_MACHINE";
Alan Stokes10c47672022-12-13 17:17:08 +000020 field public static final long MAX_VSOCK_PORT = 4294967295L; // 0xffffffffL
21 field public static final long MIN_VSOCK_PORT = 1024L; // 0x400L
Alan Stokesca0d27e2022-10-03 11:26:13 +010022 field public static final int STATUS_DELETED = 2; // 0x2
23 field public static final int STATUS_RUNNING = 1; // 0x1
24 field public static final int STATUS_STOPPED = 0; // 0x0
25 field public static final String USE_CUSTOM_VIRTUAL_MACHINE_PERMISSION = "android.permission.USE_CUSTOM_VIRTUAL_MACHINE";
26 }
27
28 public interface VirtualMachineCallback {
29 method public void onError(@NonNull android.system.virtualmachine.VirtualMachine, int, @NonNull String);
30 method public void onPayloadFinished(@NonNull android.system.virtualmachine.VirtualMachine, int);
31 method public void onPayloadReady(@NonNull android.system.virtualmachine.VirtualMachine);
32 method public void onPayloadStarted(@NonNull android.system.virtualmachine.VirtualMachine);
33 method public void onRamdump(@NonNull android.system.virtualmachine.VirtualMachine, @NonNull android.os.ParcelFileDescriptor);
34 method public void onStopped(@NonNull android.system.virtualmachine.VirtualMachine, int);
35 field public static final int ERROR_PAYLOAD_CHANGED = 2; // 0x2
36 field public static final int ERROR_PAYLOAD_INVALID_CONFIG = 3; // 0x3
37 field public static final int ERROR_PAYLOAD_VERIFICATION_FAILED = 1; // 0x1
38 field public static final int ERROR_UNKNOWN = 0; // 0x0
39 field public static final int STOP_REASON_BOOTLOADER_INSTANCE_IMAGE_CHANGED = 10; // 0xa
40 field public static final int STOP_REASON_BOOTLOADER_PUBLIC_KEY_MISMATCH = 9; // 0x9
41 field public static final int STOP_REASON_CRASH = 6; // 0x6
Alan Stokesca0d27e2022-10-03 11:26:13 +010042 field public static final int STOP_REASON_HANGUP = 16; // 0x10
43 field public static final int STOP_REASON_INFRASTRUCTURE_ERROR = 0; // 0x0
44 field public static final int STOP_REASON_KILLED = 1; // 0x1
45 field public static final int STOP_REASON_MICRODROID_FAILED_TO_CONNECT_TO_VIRTUALIZATION_SERVICE = 11; // 0xb
46 field public static final int STOP_REASON_MICRODROID_INVALID_PAYLOAD_CONFIG = 14; // 0xe
47 field public static final int STOP_REASON_MICRODROID_PAYLOAD_HAS_CHANGED = 12; // 0xc
48 field public static final int STOP_REASON_MICRODROID_PAYLOAD_VERIFICATION_FAILED = 13; // 0xd
49 field public static final int STOP_REASON_MICRODROID_UNKNOWN_RUNTIME_ERROR = 15; // 0xf
50 field public static final int STOP_REASON_PVM_FIRMWARE_INSTANCE_IMAGE_CHANGED = 8; // 0x8
51 field public static final int STOP_REASON_PVM_FIRMWARE_PUBLIC_KEY_MISMATCH = 7; // 0x7
52 field public static final int STOP_REASON_REBOOT = 5; // 0x5
53 field public static final int STOP_REASON_SHUTDOWN = 3; // 0x3
Alan Stokes7c459e82022-12-06 12:21:49 +000054 field public static final int STOP_REASON_START_FAILED = 4; // 0x4
Alan Stokesca0d27e2022-10-03 11:26:13 +010055 field public static final int STOP_REASON_UNKNOWN = 2; // 0x2
56 field public static final int STOP_REASON_VIRTUALIZATION_SERVICE_DIED = -1; // 0xffffffff
57 }
58
59 public final class VirtualMachineConfig {
60 method @NonNull public String getApkPath();
61 method @NonNull public int getDebugLevel();
Shikha Panwara2ff8c52022-11-30 19:25:46 +000062 method @IntRange(from=0) public long getEncryptedStorageKib();
Alan Stokesca0d27e2022-10-03 11:26:13 +010063 method @IntRange(from=0) public int getMemoryMib();
64 method @IntRange(from=1) public int getNumCpus();
65 method @Nullable public String getPayloadBinaryPath();
Alan Stokesca0d27e2022-10-03 11:26:13 +010066 method public boolean isCompatibleWith(@NonNull android.system.virtualmachine.VirtualMachineConfig);
Shikha Panwara2ff8c52022-11-30 19:25:46 +000067 method public boolean isEncryptedStorageEnabled();
Alan Stokesca0d27e2022-10-03 11:26:13 +010068 method public boolean isProtectedVm();
Seungjae Yoofa22bb02022-12-08 16:38:42 +090069 field public static final int DEBUG_LEVEL_FULL = 1; // 0x1
Alan Stokesca0d27e2022-10-03 11:26:13 +010070 field public static final int DEBUG_LEVEL_NONE = 0; // 0x0
71 }
72
73 public static final class VirtualMachineConfig.Builder {
74 ctor public VirtualMachineConfig.Builder(@NonNull android.content.Context);
75 method @NonNull public android.system.virtualmachine.VirtualMachineConfig build();
76 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setApkPath(@NonNull String);
77 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setDebugLevel(int);
Alan Stokes6be517c2022-12-12 17:19:39 +000078 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setEncryptedStorageKib(@IntRange(from=1) long);
79 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setMemoryMib(@IntRange(from=1) int);
Alan Stokesca0d27e2022-10-03 11:26:13 +010080 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setNumCpus(@IntRange(from=1) int);
81 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setPayloadBinaryPath(@NonNull String);
Alan Stokesca0d27e2022-10-03 11:26:13 +010082 method @NonNull public android.system.virtualmachine.VirtualMachineConfig.Builder setProtectedVm(boolean);
83 }
84
85 public final class VirtualMachineDescriptor implements android.os.Parcelable {
86 method public int describeContents();
87 method public void writeToParcel(@NonNull android.os.Parcel, int);
88 field @NonNull public static final android.os.Parcelable.Creator<android.system.virtualmachine.VirtualMachineDescriptor> CREATOR;
89 }
90
91 public class VirtualMachineException extends java.lang.Exception {
92 ctor public VirtualMachineException(@Nullable String);
93 ctor public VirtualMachineException(@Nullable String, @Nullable Throwable);
94 ctor public VirtualMachineException(@Nullable Throwable);
95 }
96
97 public class VirtualMachineManager {
98 method @NonNull @RequiresPermission(android.system.virtualmachine.VirtualMachine.MANAGE_VIRTUAL_MACHINE_PERMISSION) public android.system.virtualmachine.VirtualMachine create(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
99 method public void delete(@NonNull String) throws android.system.virtualmachine.VirtualMachineException;
100 method @Nullable public android.system.virtualmachine.VirtualMachine get(@NonNull String) throws android.system.virtualmachine.VirtualMachineException;
101 method public int getCapabilities();
Alan Stokesca0d27e2022-10-03 11:26:13 +0100102 method @NonNull public android.system.virtualmachine.VirtualMachine getOrCreate(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineConfig) throws android.system.virtualmachine.VirtualMachineException;
103 method @NonNull public android.system.virtualmachine.VirtualMachine importFromDescriptor(@NonNull String, @NonNull android.system.virtualmachine.VirtualMachineDescriptor) throws android.system.virtualmachine.VirtualMachineException;
104 field public static final int CAPABILITY_NON_PROTECTED_VM = 2; // 0x2
105 field public static final int CAPABILITY_PROTECTED_VM = 1; // 0x1
106 }
107
108}
109