From 05da1266a09a5e958868ca5bdb479f25e275ea6b Mon Sep 17 00:00:00 2001 From: Alyssa Ross Date: Sat, 14 Mar 2020 01:56:17 +0000 Subject: queue_max_sizes --- devices/src/virtio/controller.rs | 15 ++++++++++++++- src/wl.rs | 7 +++++++ 2 files changed, 21 insertions(+), 1 deletion(-) diff --git a/devices/src/virtio/controller.rs b/devices/src/virtio/controller.rs index 22e2850..8ed0a3a 100644 --- a/devices/src/virtio/controller.rs +++ b/devices/src/virtio/controller.rs @@ -106,6 +106,8 @@ pub enum MsgOnSocketRequest { #[derive(Debug, Serialize, Deserialize)] pub enum BincodeRequest { + QueueMaxSizes, + ReadConfig { offset: u64, len: usize }, WriteConfig { offset: u64, data: Vec }, @@ -137,6 +139,8 @@ pub enum MsgOnSocketResponse { #[derive(Debug, Deserialize, Serialize)] pub enum BincodeResponse { + QueueMaxSizes(Vec), + ReadConfig(Vec), GetDeviceBars(Vec), @@ -332,7 +336,16 @@ impl VirtioDevice for Controller { } fn queue_max_sizes(&self) -> Vec { - QUEUE_SIZES.to_vec() + if let Err(e) = self.socket.send(BincodeRequest::QueueMaxSizes) { + panic!("failed to send QueueMaxSizes: {}", e); + } + + match self.socket.recv_bincode() { + Ok(BincodeResponse::QueueMaxSizes(sizes)) => sizes, + response => { + panic!("bad response to Reset: {:?}", response); + } + } } fn features(&self) -> u64 { diff --git a/src/wl.rs b/src/wl.rs index 8cc2aa4..5e5c0e6 100644 --- a/src/wl.rs +++ b/src/wl.rs @@ -62,6 +62,13 @@ fn main() { } } + Ok(Bincode(BincodeRequest::QueueMaxSizes)) => { + let result = wl.queue_max_sizes(); + if let Err(e) = msg_socket.send(BincodeResponse::QueueMaxSizes(result)) { + panic!("responding to QueueMaxSizes failed: {}", e); + } + } + Ok(MsgOnSocket(MsgOnSocketRequest::Features)) => { let result = wl.features(); if let Err(e) = msg_socket.send(MsgOnSocketResponse::Features(result)) { -- cgit 1.4.1