MCPcopy Create free account
hub / github.com/cloud-hypervisor/cloud-hypervisor / register

Function register

vmm/src/uffd.rs:132–151  ·  view source on GitHub ↗

Register a memory range for missing-page fault handling.

(fd: BorrowedFd<'_>, addr: u64, len: u64)

Source from the content-addressed store, hash-verified

130
131/// Register a memory range for missing-page fault handling.
132pub(crate) fn register(fd: BorrowedFd<'_>, addr: u64, len: u64) -> Result<u64, Error> {
133 let mut reg = UffdioRegister {
134 range_start: addr,
135 range_len: len,
136 mode: userfaultfd::UFFDIO_REGISTER_MODE_MISSING,
137 ioctls: 0,
138 };
139 // SAFETY: `reg` is a valid, correctly-sized struct for this ioctl.
140 let ret = unsafe {
141 libc::ioctl(
142 fd.as_raw_fd(),
143 userfaultfd::UFFDIO_REGISTER as libc::Ioctl,
144 &mut reg,
145 )
146 };
147 if ret < 0 {
148 return Err(Error::last_os_error());
149 }
150 Ok(reg.ioctls)
151}
152
153/// Resolve a page fault by copying data into the faulted address.
154pub(crate) fn copy(fd: BorrowedFd<'_>, dst: u64, src: *const u8, len: u64) -> Result<(), Error> {

Callers 2

start_vmmFunction · 0.85
restore_by_uffdMethod · 0.85

Calls 1

as_raw_fdMethod · 0.45

Tested by

no test coverage detected