virtio/devices/virtio_gpu/messages/
resource_detach_backing.rs1use kernel::ErrorCode;
6
7use super::super::helpers::copy_to_iter;
8use super::ctrl_header::{CtrlHeader, CtrlType};
9use super::{VirtIOGPUReq, VirtIOGPUResp};
10
11#[derive(Debug, Copy, Clone)]
12#[repr(C)]
13pub struct ResourceDetachBackingReq {
14 pub ctrl_header: CtrlHeader,
15 pub resource_id: u32,
16 pub padding: u32,
17}
18
19impl VirtIOGPUReq for ResourceDetachBackingReq {
20 const ENCODED_SIZE: usize = core::mem::size_of::<Self>();
21 const CTRL_TYPE: CtrlType = CtrlType::CmdResourceDetachBacking;
22 type ExpectedResponse = ResourceDetachBackingResp;
23
24 fn write_to_byte_iter<'a>(
25 &self,
26 dst: &mut impl Iterator<Item = &'a mut u8>,
27 ) -> Result<(), ErrorCode> {
28 self.ctrl_header.write_to_byte_iter(dst)?;
32 copy_to_iter(dst, u32::to_le_bytes(self.resource_id).into_iter())?;
33 copy_to_iter(dst, u32::to_le_bytes(self.padding).into_iter())?;
34
35 Ok(())
36 }
37}
38
39#[derive(Debug, Copy, Clone)]
40#[repr(C)]
41pub struct ResourceDetachBackingResp {
42 pub ctrl_header: CtrlHeader,
43}
44
45impl VirtIOGPUResp for ResourceDetachBackingResp {
46 const ENCODED_SIZE: usize = core::mem::size_of::<Self>();
47 const EXPECTED_CTRL_TYPE: CtrlType = CtrlType::RespOkNoData;
48
49 fn from_byte_iter_post_checked_ctrl_header(
50 ctrl_header: CtrlHeader,
51 _src: &mut impl Iterator<Item = u8>,
52 ) -> Result<Self, ErrorCode> {
53 Ok(ResourceDetachBackingResp { ctrl_header })
54 }
55}