summary refs log tree commit diff
path: root/src/linux.rs
diff options
context:
space:
mode:
authorZach Reizner <zachr@google.com>2019-12-12 18:58:50 -0800
committerCommit Bot <commit-bot@chromium.org>2020-01-09 07:53:57 +0000
commit19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85 (patch)
tree5465440731391ebbb4d69776b2a29489a4eeadfa /src/linux.rs
parent58df38b61519222911baa761ffd26da93613dbf6 (diff)
downloadcrosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar.gz
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar.bz2
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar.lz
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar.xz
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.tar.zst
crosvm-19ad1f3d3a24b25878f03c6f3bb917c4ae28ce85.zip
devices: remove user_command from proxy device
The only device that used user_command was Serial. This change makes
Serial device use a thread to read from its input instead of using
user_command.

BUG=chromium:1033787
TEST=./build_test
     run crosvm with stdio serial with and without sandbox

Change-Id: Ia0f2ee83d94ad2fee3f1f4f89aa734b976e33507
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/1966435
Tested-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Reviewed-by: Dylan Reid <dgreid@chromium.org>
Commit-Queue: Zach Reizner <zachr@chromium.org>
Auto-Submit: Zach Reizner <zachr@chromium.org>
Diffstat (limited to 'src/linux.rs')
-rw-r--r--src/linux.rs34
1 files changed, 2 insertions, 32 deletions
diff --git a/src/linux.rs b/src/linux.rs
index 2aa135d..c7e6b0b 100644
--- a/src/linux.rs
+++ b/src/linux.rs
@@ -1602,7 +1602,6 @@ fn run_control(
     #[derive(PollToken)]
     enum Token {
         Exit,
-        Stdin,
         ChildSignal,
         CheckAvailableMemory,
         LowMemory,
@@ -1611,9 +1610,7 @@ fn run_control(
         VmControl { index: usize },
     }
 
-    let stdin_handle = stdin();
-    let stdin_lock = stdin_handle.lock();
-    stdin_lock
+    stdin()
         .set_raw_mode()
         .expect("failed to set terminal raw mode");
 
@@ -1623,10 +1620,6 @@ fn run_control(
     ])
     .map_err(Error::PollContextAdd)?;
 
-    if let Err(e) = poll_ctx.add(&stdin_handle, Token::Stdin) {
-        warn!("failed to add stdin to poll context: {}", e);
-    }
-
     if let Some(socket_server) = &control_server_socket {
         poll_ctx
             .add(socket_server, Token::VmControlServer)
@@ -1715,26 +1708,6 @@ fn run_control(
                     info!("vcpu requested shutdown");
                     break 'poll;
                 }
-                Token::Stdin => {
-                    let mut out = [0u8; 64];
-                    match stdin_lock.read_raw(&mut out[..]) {
-                        Ok(0) => {
-                            // Zero-length read indicates EOF. Remove from pollables.
-                            let _ = poll_ctx.delete(&stdin_handle);
-                        }
-                        Err(e) => {
-                            warn!("error while reading stdin: {}", e);
-                            let _ = poll_ctx.delete(&stdin_handle);
-                        }
-                        Ok(count) => {
-                            if let Some(ref stdio_serial) = linux.stdio_serial {
-                                stdio_serial
-                                    .queue_input_bytes(&out[..count])
-                                    .expect("failed to queue bytes into serial port");
-                            }
-                        }
-                    }
-                }
                 Token::ChildSignal => {
                     // Print all available siginfo structs, then exit the loop.
                     while let Some(siginfo) = sigchld_fd.read().map_err(Error::SignalFd)? {
@@ -1928,9 +1901,6 @@ fn run_control(
         for event in events.iter_hungup() {
             match event.token() {
                 Token::Exit => {}
-                Token::Stdin => {
-                    let _ = poll_ctx.delete(&stdin_handle);
-                }
                 Token::ChildSignal => {}
                 Token::CheckAvailableMemory => {}
                 Token::LowMemory => {}
@@ -2003,7 +1973,7 @@ fn run_control(
     // control sockets are closed when this function exits.
     mem::drop(linux);
 
-    stdin_lock
+    stdin()
         .set_canon_mode()
         .expect("failed to restore canonical mode for terminal");