diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-03-26 11:54:48 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-06-15 09:37:22 +0000 |
commit | 98d69a42870030ad533dd8eda5da817430c2b71c (patch) | |
tree | 2f75316c682b4d0588c7c87faf142c064fb37f3c /devices/src | |
parent | 353b1d9091b9095282463f36e26643506e2d2897 (diff) | |
download | crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar.gz crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar.bz2 crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar.lz crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar.xz crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.tar.zst crosvm-98d69a42870030ad533dd8eda5da817430c2b71c.zip |
send wl::Params over socket
Diffstat (limited to 'devices/src')
-rw-r--r-- | devices/src/virtio/controller.rs | 33 | ||||
-rw-r--r-- | devices/src/virtio/wl.rs | 1 |
2 files changed, 14 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, })?; diff --git a/devices/src/virtio/wl.rs b/devices/src/virtio/wl.rs index 5a3505b..6671693 100644 --- a/devices/src/virtio/wl.rs +++ b/devices/src/virtio/wl.rs @@ -1547,6 +1547,7 @@ use std::fmt::Formatter; use super::VirtioDeviceNew; +#[derive(Debug)] pub struct Params { pub wayland_paths: Map<String, PathBuf>, pub vm_socket: VmMemoryControlRequestSocket, |