Skip to content

Commit caff9a4

Browse files
Added GuestMem access wrappers for a PagedRange
1 parent 26632eb commit caff9a4

File tree

1 file changed

+17
-0
lines changed

1 file changed

+17
-0
lines changed

vm/vmcore/guestmem/src/lib.rs

Lines changed: 17 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1895,6 +1895,23 @@ impl GuestMemory {
18951895
})
18961896
}
18971897

1898+
/// Check if a given PagedRange is readable or not.
1899+
pub fn probe_gpn_readable_range(&self, range: &PagedRange<'_>) -> Result<(), GuestMemoryError> {
1900+
self.op_range(GuestMemoryOperation::Probe, range, move |addr, _r| {
1901+
let mut b = [0];
1902+
self.read_at_inner(addr, &mut b)
1903+
})
1904+
}
1905+
1906+
/// Check if a given PagedRange is writable or not.
1907+
pub fn probe_gpn_writable_range(&self, range: &PagedRange<'_>) -> Result<(), GuestMemoryError> {
1908+
self.op_range(GuestMemoryOperation::Probe, range, move |addr, _r| {
1909+
self.compare_exchange(addr, 0u8, 0)
1910+
.map(|_| ())
1911+
.map_err(|err| GuestMemoryBackingError::other(addr, err))
1912+
})
1913+
}
1914+
18981915
/// Check if a given GPA is readable or not.
18991916
pub fn probe_gpa_readable(&self, gpa: u64) -> Result<(), GuestMemoryErrorKind> {
19001917
let mut b = [0];

0 commit comments

Comments
 (0)