summary refs log tree commit diff
path: root/sys_util/src/guest_memory.rs
diff options
context:
space:
mode:
Diffstat (limited to 'sys_util/src/guest_memory.rs')
-rw-r--r--sys_util/src/guest_memory.rs9
1 files changed, 9 insertions, 0 deletions
diff --git a/sys_util/src/guest_memory.rs b/sys_util/src/guest_memory.rs
index 8e2dd97..2a849e9 100644
--- a/sys_util/src/guest_memory.rs
+++ b/sys_util/src/guest_memory.rs
@@ -105,6 +105,15 @@ impl GuestMemory {
         self.regions.len()
     }
 
+    /// Madvise away the address range in the host that is associated with the given guest range.
+    pub fn dont_need_range(&self, addr: GuestAddress, count: usize) -> Result<()> {
+        self.do_in_region(addr, move |mapping, offset| {
+            mapping
+                .dont_need_range(offset, count)
+                .map_err(|e| Error::MemoryAccess(addr, e))
+        })
+    }
+
     /// Perform the specified action on each region's addresses.
     pub fn with_regions<F, E>(&self, cb: F) -> result::Result<(), E>
         where F: Fn(usize, GuestAddress, usize, usize) -> result::Result<(), E>