summary refs log tree commit diff
path: root/kvm/tests/real_run_adder.rs
diff options
context:
space:
mode:
Diffstat (limited to 'kvm/tests/real_run_adder.rs')
-rw-r--r--kvm/tests/real_run_adder.rs21
1 files changed, 14 insertions, 7 deletions
diff --git a/kvm/tests/real_run_adder.rs b/kvm/tests/real_run_adder.rs
index aa90a19..26b1add 100644
--- a/kvm/tests/real_run_adder.rs
+++ b/kvm/tests/real_run_adder.rs
@@ -10,7 +10,7 @@ extern crate kvm;
 
 use kvm::*;
 use kvm_sys::kvm_regs;
-use sys_util::MemoryMapping;
+use sys_util::{GuestAddress, GuestMemory};
 
 #[test]
 fn test_run() {
@@ -26,14 +26,17 @@ fn test_run() {
         0xf4,             /* hlt */
     ];
 
+    let mem_size = 0x1000;
+    let load_addr = GuestAddress(0x1000);
+    let mem = GuestMemory::new(&vec![(load_addr, mem_size)]).unwrap();
+
     let kvm = Kvm::new().expect("new kvm failed");
-    let mut vm = Vm::new(&kvm).expect("new vm failed");
+    let vm = Vm::new(&kvm, mem).expect("new vm failed");
     let vcpu = Vcpu::new(0, &kvm, &vm).expect("new vcpu failed");
 
-    let mem_size = 0x1000;
-    let mem = MemoryMapping::new(mem_size).expect("new mmap failed");
-    mem.as_mut_slice()[..code.len()].copy_from_slice(&code);
-    vm.add_memory(0x1000, mem).expect("adding memory failed");
+    vm.get_memory()
+        .write_slice_at_addr(&code, load_addr)
+        .expect("Writing code to memory failed.");
 
     let mut vcpu_sregs = vcpu.get_sregs().expect("get sregs failed");
     assert_ne!(vcpu_sregs.cs.base, 0);
@@ -62,5 +65,9 @@ fn test_run() {
     }
 
     assert_eq!(out, "9\n");
-    assert_eq!(vm.get_memory(0x1000).unwrap()[0xf1], 0x13);
+    let result: u8 =
+        vm.get_memory()
+            .read_obj_from_addr(load_addr.checked_add(0xf1).unwrap())
+            .expect("Error reading the result.");
+    assert_eq!(result, 0x13);
 }