Merge "Microdroid: Use libdice_policy_builder" into main
diff --git a/javalib/Android.bp b/javalib/Android.bp
index cbc2a17..e3cb2e3 100644
--- a/javalib/Android.bp
+++ b/javalib/Android.bp
@@ -64,39 +64,3 @@
"//packages/modules/Virtualization:__subpackages__",
],
}
-
-java_api_contribution {
- name: "framework-virtualization-public-stubs",
- api_surface: "public",
- api_file: "api/current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
-
-java_api_contribution {
- name: "framework-virtualization-system-stubs",
- api_surface: "system",
- api_file: "api/system-current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
-
-java_api_contribution {
- name: "framework-virtualization-test-stubs",
- api_surface: "test",
- api_file: "api/test-current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
-
-java_api_contribution {
- name: "framework-virtualization-module-lib-stubs",
- api_surface: "module-lib",
- api_file: "api/module-lib-current.txt",
- visibility: [
- "//build/orchestrator/apis",
- ],
-}
diff --git a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
index 474c2f2..a6381ac 100644
--- a/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
+++ b/javalib/src/android/system/virtualmachine/VirtualMachineConfig.java
@@ -126,7 +126,7 @@
/**
* Run VM with vCPU topology matching the physical CPU topology of the host. Usually takes
- * longer to boot and cosumes more resources compared to a single vCPU. Typically a good option
+ * longer to boot and consumes more resources compared to a single vCPU. Typically a good option
* for long-running workloads that benefit from parallel execution.
*
* @hide
diff --git a/libs/libfdt/src/iterators.rs b/libs/libfdt/src/iterators.rs
index 7406164..e818c68 100644
--- a/libs/libfdt/src/iterators.rs
+++ b/libs/libfdt/src/iterators.rs
@@ -304,7 +304,7 @@
}
impl<'a> SubnodeIterator<'a> {
- pub(crate) fn new(node: &'a FdtNode) -> Result<Self, FdtError> {
+ pub(crate) fn new(node: &FdtNode<'a>) -> Result<Self, FdtError> {
let subnode = node.first_subnode()?;
Ok(Self { subnode })
diff --git a/libs/libfdt/src/lib.rs b/libs/libfdt/src/lib.rs
index d90f5f0..8a4e251 100644
--- a/libs/libfdt/src/lib.rs
+++ b/libs/libfdt/src/lib.rs
@@ -468,7 +468,7 @@
}
/// Returns an iterator of subnodes
- pub fn subnodes(&'a self) -> Result<SubnodeIterator<'a>> {
+ pub fn subnodes(&self) -> Result<SubnodeIterator<'a>> {
SubnodeIterator::new(self)
}
@@ -750,6 +750,14 @@
FdtNode { fdt: self.fdt, offset: self.offset }
}
+ /// Adds new subnodes to the given node.
+ pub fn add_subnodes(&mut self, names: &[&CStr]) -> Result<()> {
+ for name in names {
+ self.add_subnode_offset(name.to_bytes())?;
+ }
+ Ok(())
+ }
+
/// Adds a new subnode to the given node and return it as a FdtNodeMut on success.
pub fn add_subnode(&'a mut self, name: &CStr) -> Result<Self> {
let offset = self.add_subnode_offset(name.to_bytes())?;
diff --git a/libs/libfdt/tests/api_test.rs b/libs/libfdt/tests/api_test.rs
index 08fb8a5..cafbf97 100644
--- a/libs/libfdt/tests/api_test.rs
+++ b/libs/libfdt/tests/api_test.rs
@@ -19,6 +19,7 @@
use core::ffi::CStr;
use cstr::cstr;
use libfdt::{Fdt, FdtError, FdtNodeMut, Phandle};
+use std::collections::HashSet;
use std::ffi::CString;
use std::fs;
use std::ops::Range;
@@ -451,6 +452,22 @@
}
#[test]
+fn node_mut_add_subnodes() {
+ let mut data = vec![0_u8; 1000];
+ let fdt = Fdt::create_empty_tree(&mut data).unwrap();
+
+ let mut root = fdt.root_mut().unwrap();
+ let names = [cstr!("a"), cstr!("b")];
+ root.add_subnodes(&names).unwrap();
+
+ let expected: HashSet<_> = names.into_iter().collect();
+ let subnodes = fdt.root().unwrap().subnodes().unwrap();
+ let names: HashSet<_> = subnodes.map(|node| node.name().unwrap()).collect();
+
+ assert_eq!(expected, names);
+}
+
+#[test]
#[ignore] // Borrow checker test. Compilation success is sufficient.
fn node_subnode_lifetime() {
let data = fs::read(TEST_TREE_PHANDLE_PATH).unwrap();
@@ -471,6 +488,28 @@
#[test]
#[ignore] // Borrow checker test. Compilation success is sufficient.
+fn node_subnodess_lifetime() {
+ let data = fs::read(TEST_TREE_PHANDLE_PATH).unwrap();
+ let fdt = Fdt::from_slice(&data).unwrap();
+
+ let first_subnode_name = {
+ let first_subnode = {
+ let mut subnodes_iter = {
+ let root = fdt.root().unwrap();
+ root.subnodes().unwrap()
+ // Make root to be dropped
+ };
+ subnodes_iter.next().unwrap()
+ // Make subnodess_iter to be dropped
+ };
+ first_subnode.name()
+ // Make first_subnode to be dropped
+ };
+ assert_eq!(Ok(cstr!("node_a")), first_subnode_name);
+}
+
+#[test]
+#[ignore] // Borrow checker test. Compilation success is sufficient.
fn node_descendants_lifetime() {
let data = fs::read(TEST_TREE_PHANDLE_PATH).unwrap();
let fdt = Fdt::from_slice(&data).unwrap();