diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-03-14 01:20:12 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-06-15 09:36:56 +0000 |
commit | 3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43 (patch) | |
tree | 25d51c098f7770fb982f51f5a33734c53ff3ad58 | |
parent | c7c60d2c07f573e0431d8b81cb169cc751b4ea99 (diff) | |
download | crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar.gz crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar.bz2 crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar.lz crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar.xz crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.tar.zst crosvm-3806c2d8455b1a54cd20c9c9e6bd46fe95bf6a43.zip |
device_type
-rw-r--r-- | devices/src/virtio/controller.rs | 14 | ||||
-rw-r--r-- | src/wl.rs | 23 |
2 files changed, 28 insertions, 9 deletions
diff --git a/devices/src/virtio/controller.rs b/devices/src/virtio/controller.rs index 857bbe8..514a96b 100644 --- a/devices/src/virtio/controller.rs +++ b/devices/src/virtio/controller.rs @@ -83,6 +83,8 @@ pub enum MsgOnSocketRequest { memory_params: MemoryParams, }, + DeviceType, + Features, AckFeatures(u64), @@ -127,6 +129,7 @@ impl From<BincodeRequest> for Request { #[derive(Debug, MsgOnSocket)] pub enum MsgOnSocketResponse { + DeviceType(u32), Features(u64), Reset(bool), Kill, @@ -316,7 +319,16 @@ impl VirtioDevice for Controller { } fn device_type(&self) -> u32 { - TYPE_WL + if let Err(e) = self.socket.send(MsgOnSocketRequest::DeviceType) { + panic!("failed to send DeviceType: {}", e); + } + + match self.socket.recv_msg_on_socket() { + Ok(MsgOnSocketResponse::DeviceType(device_type)) => device_type, + response => { + panic!("bad response to Reset: {:?}", response); + } + } } fn queue_max_sizes(&self) -> &[u16] { diff --git a/src/wl.rs b/src/wl.rs index fb19622..8cc2aa4 100644 --- a/src/wl.rs +++ b/src/wl.rs @@ -55,15 +55,11 @@ fn main() { loop { use poly_msg_socket::Value::*; match msg_socket.recv() { - Ok(MsgOnSocket(MsgOnSocketRequest::Kill)) => { - // Will block until worker shuts down. - drop(wl); - - if let Err(e) = msg_socket.send(MsgOnSocketResponse::Kill) { - error!("responding to Kill failed: {}", e); + Ok(MsgOnSocket(MsgOnSocketRequest::DeviceType)) => { + let result = wl.device_type(); + if let Err(e) = msg_socket.send(MsgOnSocketResponse::DeviceType(result)) { + panic!("responding to DeviceType failed: {}", e); } - - break; } Ok(MsgOnSocket(MsgOnSocketRequest::Features)) => { @@ -143,6 +139,17 @@ fn main() { } } + Ok(MsgOnSocket(MsgOnSocketRequest::Kill)) => { + // Will block until worker shuts down. + drop(wl); + + if let Err(e) = msg_socket.send(MsgOnSocketResponse::Kill) { + error!("responding to Kill failed: {}", e); + } + + break; + } + Ok(MsgOnSocket(msg @ MsgOnSocketRequest::Create { .. })) => { panic!("unexpected message {:?}", msg) } |