summary refs log tree commit diff
path: root/src/main.rs
diff options
context:
space:
mode:
authorTristan Muntsinger <muntsinger@google.com>2018-12-21 16:01:56 -0800
committerchrome-bot <chrome-bot@chromium.org>2019-01-28 14:17:10 -0800
commit4133b0120d1e16cafbb373b2ae17a214b594038b (patch)
tree177506988846e4b86e639cdb963bbaba0c4e6ca9 /src/main.rs
parentf052cfefc8d6d27fa068c34190615db1819b8fef (diff)
downloadcrosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.gz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.bz2
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.lz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.xz
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.tar.zst
crosvm-4133b0120d1e16cafbb373b2ae17a214b594038b.zip
crosvm: x86_64 guest support for android device-tree
This device tree is derived from the Android fstab file which is
provided via command line flag.

BUG=chromium:922737
TEST=None
CQ-DEPEND=CL:1415390
CQ-DEPEND=CL:1415270

Change-Id: Idd007c844f84cab3ff37be16a718f14e5f630312
Reviewed-on: https://chromium-review.googlesource.com/1370058
Commit-Ready: Daniel Verkamp <dverkamp@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Diffstat (limited to 'src/main.rs')
-rw-r--r--src/main.rs21
1 files changed, 21 insertions, 0 deletions
diff --git a/src/main.rs b/src/main.rs
index 5847087..9392360 100644
--- a/src/main.rs
+++ b/src/main.rs
@@ -76,6 +76,7 @@ pub struct Config {
     vcpu_count: Option<u32>,
     memory: Option<usize>,
     kernel_path: PathBuf,
+    android_fstab: Option<PathBuf>,
     params: Vec<String>,
     socket_path: Option<PathBuf>,
     plugin: Option<PathBuf>,
@@ -104,6 +105,7 @@ impl Default for Config {
             vcpu_count: None,
             memory: None,
             kernel_path: PathBuf::default(),
+            android_fstab: None,
             params: Vec::new(),
             socket_path: None,
             plugin: None,
@@ -178,6 +180,24 @@ fn set_argument(cfg: &mut Config, name: &str, value: Option<&str>) -> argument::
                 cfg.kernel_path = kernel_path;
             }
         }
+        "android-fstab" => {
+            if cfg.android_fstab.is_some()
+                && !cfg.android_fstab.as_ref().unwrap().as_os_str().is_empty()
+            {
+                return Err(argument::Error::TooManyArguments(
+                    "expected exactly one android fstab path".to_owned(),
+                ));
+            } else {
+                let android_fstab = PathBuf::from(value.unwrap());
+                if !android_fstab.exists() {
+                    return Err(argument::Error::InvalidValue {
+                        value: value.unwrap().to_owned(),
+                        expected: "this android fstab path does not exist",
+                    });
+                }
+                cfg.android_fstab = Some(android_fstab);
+            }
+        }
         "params" => {
             cfg.params.push(value.unwrap().to_owned());
         }
@@ -481,6 +501,7 @@ fn set_argument(cfg: &mut Config, name: &str, value: Option<&str>) -> argument::
 fn run_vm(args: std::env::Args) -> std::result::Result<(), ()> {
     let arguments =
         &[Argument::positional("KERNEL", "bzImage of kernel to run"),
+          Argument::value("android-fstab", "PATH", "Path to Android fstab"),
           Argument::short_value('p',
                                 "params",
                                 "PARAMS",