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

Method handle_pvmemcontrol_request

devices/src/pvmemcontrol.rs:597–616  ·  view source on GitHub ↗
(&self, guest_addr: GuestAddress)

Source from the content-addressed store, hash-verified

595 }
596
597 fn handle_pvmemcontrol_request(&self, guest_addr: GuestAddress) {
598 let request: PvmemcontrolReq = if let Ok(x) = self.mem.memory().read_obj(guest_addr) {
599 x
600 } else {
601 warn!("cannot read from guest address {:#x}", guest_addr.0);
602 return;
603 };
604
605 let response: PvmemcontrolResp = match self.handle_request(request) {
606 Ok(x) => x,
607 Err(e) => {
608 warn!("cannot process request {request:?} with error {e}");
609 return;
610 }
611 };
612
613 if self.mem.memory().write_obj(response, guest_addr).is_err() {
614 warn!("cannot write to guest address {:#x}", guest_addr.0);
615 }
616 }
617
618 fn handle_guest_write(&self, offset: u64, data: &[u8]) {
619 if offset as usize != std::mem::offset_of!(PvmemcontrolTransport, command) {

Callers 1

handle_guest_writeMethod · 0.80

Calls 2

memoryMethod · 0.80
handle_requestMethod · 0.45

Tested by

no test coverage detected