diff options
Diffstat (limited to 'sys_util/src/mmap.rs')
-rw-r--r-- | sys_util/src/mmap.rs | 7 |
1 files changed, 4 insertions, 3 deletions
diff --git a/sys_util/src/mmap.rs b/sys_util/src/mmap.rs index 4ce72b6..ced48b1 100644 --- a/sys_util/src/mmap.rs +++ b/sys_util/src/mmap.rs @@ -316,8 +316,9 @@ impl MemoryMapping { Ok(()) } - /// Uses madvise to tell the kernel the specified range won't be needed soon. - pub fn dont_need_range(&self, mem_offset: usize, count: usize) -> Result<()> { + /// Uses madvise to tell the kernel to remove the specified range. Subsequent reads + /// to the pages in the range will return zero bytes. + pub fn remove_range(&self, mem_offset: usize, count: usize) -> Result<()> { self.range_end(mem_offset, count) .map_err(|_| Error::InvalidRange(mem_offset, count))?; let ret = unsafe { @@ -325,7 +326,7 @@ impl MemoryMapping { // Next time it is read, it may return zero pages. libc::madvise((self.addr as usize + mem_offset) as *mut _, count, - libc::MADV_DONTNEED) + libc::MADV_REMOVE) }; if ret < 0 { Err(Error::InvalidRange(mem_offset, count)) |