diff options
Diffstat (limited to 'devices/src/virtio/controller.rs')
-rw-r--r-- | devices/src/virtio/controller.rs | 33 |
1 files changed, 13 insertions, 20 deletions
diff --git a/devices/src/virtio/controller.rs b/devices/src/virtio/controller.rs index ba2543f..4930e44 100644 --- a/devices/src/virtio/controller.rs +++ b/devices/src/virtio/controller.rs @@ -28,29 +28,26 @@ //! the virtio queue, and routing messages in and out of `WlState`. Possible events include the kill //! event, available descriptors on the `in` or `out` queue, and incoming data on any vfd's socket. -use std::collections::BTreeMap as Map; use std::fmt::{self, Formatter}; use std::os::unix::io::{AsRawFd, RawFd}; -use std::path::PathBuf; use std::sync::Arc; use std::thread; use msg_socket::{MsgReceiver, MsgSocket}; use msg_socket2::de::{EnumAccessWithFds, SeqAccessWithFds, VariantAccessWithFds, VisitorWithFds}; -use msg_socket2::ser::{SerializeStructVariantFds, SerializeTupleVariantFds}; +use msg_socket2::ser::{SerializeAdapter, SerializeStructVariantFds, SerializeTupleVariantFds}; use msg_socket2::{DeserializeWithFds, DeserializerWithFds, FdSerializer, SerializeWithFds}; use serde::ser::{SerializeStructVariant, SerializeTupleVariant, Serializer}; use serde::{Deserialize, Serialize}; use sys_util::net::UnixSeqpacket; use sys_util::{error, EventFd, GuestMemory, PollContext, PollToken, SharedMemory}; -use super::resource_bridge::*; -use super::{Interrupt, InterruptProxyEvent, Queue, VirtioDevice}; +use super::{Interrupt, InterruptProxyEvent, Params, Queue, VirtioDevice}; use crate::{ pci::{PciAddress, PciBarConfiguration, PciCapability, PciCapabilityID}, MemoryParams, }; -use vm_control::{MaybeOwnedFd, VmMemoryControlRequestSocket}; +use vm_control::MaybeOwnedFd; // As far as I can tell, these never change on the other side, so it's // fine to just copy them over. @@ -82,9 +79,7 @@ impl PciCapability for RemotePciCapability { #[derive(Debug)] pub enum Request { Create { - // wayland_paths: Map<String, PathBuf>, - vm_socket: MaybeOwnedFd<UnixSeqpacket>, - // resource_bridge: Option<ResourceRequestSocket>, + device_params: Params, memory_params: MemoryParams, }, @@ -130,11 +125,11 @@ impl SerializeWithFds for Request { match self { Create { - vm_socket: _, + device_params, memory_params, } => { let mut sv = serializer.serialize_struct_variant("Request", 0, "Create", 2)?; - sv.serialize_field("vm_socket", &())?; + sv.serialize_field("device_params", &SerializeAdapter::new(device_params))?; sv.serialize_field("memory_params", memory_params)?; sv.end() } @@ -209,11 +204,11 @@ impl SerializeWithFds for Request { match self { Create { - vm_socket, + device_params, memory_params, } => { let mut sv = serializer.serialize_struct_variant("Request", 0, "Create", 2)?; - sv.serialize_field("vm_socket", vm_socket)?; + sv.serialize_field("device_params", device_params)?; sv.serialize_field("memory_params", memory_params)?; sv.end() } @@ -336,7 +331,9 @@ impl<'de> DeserializeWithFds<'de> for Request { } Ok(Request::Create { - vm_socket: seq.next_element()?.ok_or_else(|| too_short(0))?, + device_params: seq + .next_element()? + .ok_or_else(|| too_short(0))?, memory_params: seq .next_element()? .ok_or_else(|| too_short(1))?, @@ -685,16 +682,12 @@ pub struct Controller { impl Controller { pub fn create( - wayland_paths: Map<String, PathBuf>, - vm_socket: VmMemoryControlRequestSocket, - resource_bridge: Option<ResourceRequestSocket>, + device_params: Params, memory_params: MemoryParams, socket: Socket, ) -> Result<Controller, msg_socket2::Error> { socket.send(Request::Create { - // wayland_paths, - vm_socket: MaybeOwnedFd::new_borrowed(&vm_socket), - // resource_bridge, + device_params, memory_params, })?; |