(&self, guest_addr: GuestAddress)
| 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) { |
no test coverage detected