summary refs log tree commit diff
path: root/sys_util/src/guest_memory.rs
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2018-01-02 13:53:09 -0800
committerchrome-bot <chrome-bot@chromium.org>2018-01-03 14:23:23 -0800
commit20c3c2af2fa5939417efb994d712f77d84c1dac1 (patch)
tree4c778db7d4ba5d73d72c3a4947b97e12fca6cbfc /sys_util/src/guest_memory.rs
parentdf595003645c39728b05974990cca52ed9ff6742 (diff)
downloadcrosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar.gz
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar.bz2
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar.lz
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar.xz
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.tar.zst
crosvm-20c3c2af2fa5939417efb994d712f77d84c1dac1.zip
sys_util: allow empty GuestMemory
This is needed for plugin process style executions because they don't
register guest memory though the GuestMemory interface. Their memory is
more dynamic and ill-suited to the GuestMemory abstraction.

TEST=./build_test
BUG=None

Change-Id: I250b0b874ef6a0e342fd6e659301f389d01a4cda
Reviewed-on: https://chromium-review.googlesource.com/848018
Commit-Ready: Zach Reizner <zachr@chromium.org>
Tested-by: Zach Reizner <zachr@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'sys_util/src/guest_memory.rs')
-rw-r--r--sys_util/src/guest_memory.rs5
1 files changed, 0 insertions, 5 deletions
diff --git a/sys_util/src/guest_memory.rs b/sys_util/src/guest_memory.rs
index 2a849e9..01892b5 100644
--- a/sys_util/src/guest_memory.rs
+++ b/sys_util/src/guest_memory.rs
@@ -19,7 +19,6 @@ pub enum Error {
     MemoryAccess(GuestAddress, mmap::Error),
     MemoryMappingFailed(mmap::Error),
     MemoryRegionOverlap,
-    NoMemoryRegions,
     RegionOperationFailed,
 }
 pub type Result<T> = result::Result<T, Error>;
@@ -44,10 +43,6 @@ impl GuestMemory {
     /// Creates a container for guest memory regions.
     /// Valid memory regions are specified as a Vec of (Address, Size) tuples sorted by Address.
     pub fn new(ranges: &[(GuestAddress, usize)]) -> Result<GuestMemory> {
-        if ranges.is_empty() {
-            return Err(Error::NoMemoryRegions);
-        }
-
         let mut regions = Vec::<MemoryRegion>::new();
         for range in ranges.iter() {
             if let Some(last) = regions.last() {