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

Method send_memory_fds

vmm/src/vm.rs:3034–3063  ·  view source on GitHub ↗
(
        &mut self,
        socket: &mut UnixStream,
    )

Source from the content-addressed store, hash-verified

3032 }
3033
3034 pub fn send_memory_fds(
3035 &mut self,
3036 socket: &mut UnixStream,
3037 ) -> std::result::Result<(), MigratableError> {
3038 for (slot, fd) in self
3039 .memory_manager
3040 .lock()
3041 .unwrap()
3042 .memory_slot_fds()
3043 .drain()
3044 {
3045 Request::memory_fd(std::mem::size_of_val(&slot) as u64)
3046 .write_to(socket)
3047 .map_err(|e| {
3048 MigratableError::MigrateSend(anyhow!("Error sending memory fd request: {e}"))
3049 })?;
3050 socket
3051 .send_with_fd(&slot.to_le_bytes()[..], fd)
3052 .map_err(|e| {
3053 MigratableError::MigrateSend(anyhow!("Error sending memory fd: {e}"))
3054 })?;
3055
3056 Response::read_from(socket)?.ok_or_abandon(
3057 socket,
3058 MigratableError::MigrateSend(anyhow!("Error during memory fd migration")),
3059 )?;
3060 }
3061
3062 Ok(())
3063 }
3064
3065 pub fn memory_range_table(&self) -> std::result::Result<MemoryRangeTable, MigratableError> {
3066 self.memory_manager

Callers 1

send_migrationMethod · 0.80

Calls 3

memory_slot_fdsMethod · 0.80
ok_or_abandonMethod · 0.80
write_toMethod · 0.45

Tested by

no test coverage detected