diff options
author | Alyssa Ross <hi@alyssa.is> | 2020-03-13 23:55:04 +0000 |
---|---|---|
committer | Alyssa Ross <hi@alyssa.is> | 2020-06-15 09:36:47 +0000 |
commit | c11d38c9d7101de4b2bf8421fb9242f929debf70 (patch) | |
tree | 93680e9477c109cee3a7ed2027817ca0a74b961a | |
parent | f97762597454c90a9671a3e5eb8d8a59b466e659 (diff) | |
download | crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar.gz crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar.bz2 crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar.lz crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar.xz crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.tar.zst crosvm-c11d38c9d7101de4b2bf8421fb9242f929debf70.zip |
reset
-rw-r--r-- | devices/src/virtio/controller.rs | 22 | ||||
-rw-r--r-- | src/wl.rs | 11 |
2 files changed, 30 insertions, 3 deletions
diff --git a/devices/src/virtio/controller.rs b/devices/src/virtio/controller.rs index 4a770cc..2fe8488 100644 --- a/devices/src/virtio/controller.rs +++ b/devices/src/virtio/controller.rs @@ -65,6 +65,8 @@ pub enum MsgOnSocketRequest { out_queue_evt: MaybeOwnedFd<EventFd>, }, + Reset, + Kill, } @@ -90,6 +92,7 @@ impl From<BincodeRequest> for Request { #[derive(Debug, MsgOnSocket)] pub enum MsgOnSocketResponse { + Reset(bool), Kill, } @@ -151,7 +154,9 @@ impl Worker { self.shutdown = true; } - Ok(Bincode(BincodeResponse)) => unreachable!(), + Ok(msg) => { + panic!("unexpected message received: {:?}", msg); + } Err(e) => { error!("recv failed: {:?}", e); @@ -371,4 +376,19 @@ impl VirtioDevice for Controller { } } } + + fn reset(&mut self) -> bool { + if let Err(e) = self.socket.send(MsgOnSocketRequest::Reset) { + error!("failed to send Reset: {}", e); + return false; + } + + match self.socket.recv_msg_on_socket() { + Ok(MsgOnSocketResponse::Reset(result)) => result, + response => { + error!("bad response to Reset: {:?}", response); + false + } + } + } } diff --git a/src/wl.rs b/src/wl.rs index 0a8bd0a..169edb2 100644 --- a/src/wl.rs +++ b/src/wl.rs @@ -60,7 +60,7 @@ fn main() { drop(wl); if let Err(e) = msg_socket.send(MsgOnSocketResponse::Kill) { - error!("failed to send Response::Kill: {}", e); + error!("responding to Kill failed: {}", e); } break; @@ -72,7 +72,7 @@ fn main() { let mut data = vec![0; len]; wl.read_config(offset, &mut data); if let Err(e) = msg_socket.send(BincodeResponse::ReadConfig(data)) { - panic!("replying to ReadConfig failed: {}", e); + panic!("responding to ReadConfig failed: {}", e); } } @@ -111,6 +111,13 @@ fn main() { println!("activated Wl"); } + Ok(MsgOnSocket(MsgOnSocketRequest::Reset)) => { + let result = wl.reset(); + if let Err(e) = msg_socket.send(MsgOnSocketResponse::Reset(result)) { + panic!("responding to Reset failed: {}", e); + } + } + Ok(MsgOnSocket(msg @ MsgOnSocketRequest::Create { .. })) => { panic!("unexpected message {:?}", msg) } |