Add API getting list of assignable devices
An app can call getAssignableDevices to check the types of devices
supported. The app must have USE_CUSTOM_VIRTUAL_MACHINE permission
to do that.
Bug: 287379025
Test: TH
Change-Id: I2013810388eaf7599ac1e2e6e535be0aca0cbec7
diff --git a/virtualizationservice/src/aidl.rs b/virtualizationservice/src/aidl.rs
index 7dfabb0..4d0b823 100644
--- a/virtualizationservice/src/aidl.rs
+++ b/virtualizationservice/src/aidl.rs
@@ -19,6 +19,7 @@
use crate::rkpvm::request_certificate;
use android_os_permissions_aidl::aidl::android::os::IPermissionController;
use android_system_virtualizationservice::{
+ aidl::android::system::virtualizationservice::AssignableDevice::AssignableDevice,
aidl::android::system::virtualizationservice::VirtualMachineDebugInfo::VirtualMachineDebugInfo,
binder::ParcelFileDescriptor,
};
@@ -170,6 +171,16 @@
Status::new_exception_str(ExceptionCode::SERVICE_SPECIFIC, Some(e.to_string()))
})
}
+
+ fn getAssignableDevices(&self) -> binder::Result<Vec<AssignableDevice>> {
+ check_use_custom_virtual_machine()?;
+
+ // TODO(b/291191362): read VM DTBO to find assignable devices.
+ Ok(vec![AssignableDevice {
+ kind: "eh".to_owned(),
+ node: "/sys/bus/platform/devices/16d00000.eh".to_owned(),
+ }])
+ }
}
#[derive(Debug, Default)]
@@ -393,3 +404,8 @@
fn check_manage_access() -> binder::Result<()> {
check_permission("android.permission.MANAGE_VIRTUAL_MACHINE")
}
+
+/// Check whether the caller of the current Binder method is allowed to use custom VMs
+fn check_use_custom_virtual_machine() -> binder::Result<()> {
+ check_permission("android.permission.USE_CUSTOM_VIRTUAL_MACHINE")
+}