summary refs log tree commit diff
path: root/vm_control
diff options
context:
space:
mode:
authorSteven Richman <srichman@google.com>2020-05-13 23:05:58 -0700
committerCommit Bot <commit-bot@chromium.org>2020-06-10 17:08:55 +0000
commit7c359d617f82361d03910a07ab54e17f07a54b23 (patch)
treea95a48325bfaf0e7e0578723abc011acc14b633b /vm_control
parent2a0ce34f31533b8e6e8c7b7ed1a55990702958ac (diff)
downloadcrosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar.gz
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar.bz2
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar.lz
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar.xz
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.tar.zst
crosvm-7c359d617f82361d03910a07ab54e17f07a54b23.zip
hypervisor: add Vm user memory region functions
The separate Vm functions for MemoryMappings and MemoryMappingArenas
have been combined and now use a MappedRegion trait that the mappings
implement.  msync_memory_region replaces the get_mmap_arena function,
which is used by VmMsyncRequest.  Since Vm uses mutexes for cloning, it
can't return mem region references.

BUG=chromium:1077058
TEST=cargo test, cargo test -p sys_util, cargo test -p hypervisor

Change-Id: If257b16ee34d07820ae7ebdb9a3a598a41df013c
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2202845
Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Reviewed-by: Gurchetan Singh <gurchetansingh@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Commit-Queue: Gurchetan Singh <gurchetansingh@chromium.org>
Diffstat (limited to 'vm_control')
-rw-r--r--vm_control/src/lib.rs6
1 files changed, 4 insertions, 2 deletions
diff --git a/vm_control/src/lib.rs b/vm_control/src/lib.rs
index 81a11d3..1d06e4b 100644
--- a/vm_control/src/lib.rs
+++ b/vm_control/src/lib.rs
@@ -21,7 +21,9 @@ use libc::{EINVAL, EIO, ENODEV};
 use kvm::{IrqRoute, IrqSource, Vm};
 use msg_socket::{MsgError, MsgOnSocket, MsgReceiver, MsgResult, MsgSender, MsgSocket};
 use resources::{Alloc, GpuMemoryDesc, MmioType, SystemAllocator};
-use sys_util::{error, Error as SysError, EventFd, GuestAddress, MemoryMapping, MmapError, Result};
+use sys_util::{
+    error, Error as SysError, EventFd, GuestAddress, MappedRegion, MemoryMapping, MmapError, Result,
+};
 
 /// A file descriptor either borrowed or owned by this.
 #[derive(Debug)]
@@ -481,7 +483,7 @@ impl VmMsyncRequest {
         match *self {
             MsyncArena { slot, offset, size } => {
                 if let Some(arena) = vm.get_mmap_arena(slot) {
-                    match arena.msync(offset, size) {
+                    match MappedRegion::msync(arena, offset, size) {
                         Ok(()) => VmMsyncResponse::Ok,
                         Err(e) => match e {
                             MmapError::SystemCallFailed(errno) => VmMsyncResponse::Err(errno),