summary refs log tree commit diff
path: root/devices/src/virtio/rng.rs
diff options
context:
space:
mode:
authorStephen Barber <smbarber@chromium.org>2017-10-29 23:13:48 -0700
committerchrome-bot <chrome-bot@chromium.org>2017-10-30 23:21:37 -0700
commitce374793bf1b40838c7588620ac5b3784fa4997a (patch)
tree71d908d9c27b9b5d1422e45647d90be1e5a3c1a6 /devices/src/virtio/rng.rs
parentd657af628a2f0967d8a004946abde3ed34dd6dd7 (diff)
downloadcrosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar.gz
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar.bz2
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar.lz
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar.xz
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.tar.zst
crosvm-ce374793bf1b40838c7588620ac5b3784fa4997a.zip
crosvm/devices: set thread names
crosvm spawns a lot of processes/threads, and having these all use the same
name as the original process can be confusing. So at least in the instances
where Rust threads are spawned (vs. minijail_fork()), use a thread::Builder
to allow setting the thread name.

BUG=none
TEST=start crosvm, check thread names with top

Change-Id: I6e55ff5fd60f258880bda8e656ab7f9da82c656e
Reviewed-on: https://chromium-review.googlesource.com/742394
Commit-Ready: Stephen Barber <smbarber@chromium.org>
Tested-by: Stephen Barber <smbarber@chromium.org>
Reviewed-by: Stephen Barber <smbarber@chromium.org>
Diffstat (limited to 'devices/src/virtio/rng.rs')
-rw-r--r--devices/src/virtio/rng.rs29
1 files changed, 18 insertions, 11 deletions
diff --git a/devices/src/virtio/rng.rs b/devices/src/virtio/rng.rs
index 292d3f1..da5d40b 100644
--- a/devices/src/virtio/rng.rs
+++ b/devices/src/virtio/rng.rs
@@ -8,7 +8,7 @@ use std::io;
 use std::os::unix::io::{AsRawFd, RawFd};
 use std::sync::Arc;
 use std::sync::atomic::{AtomicUsize, Ordering};
-use std::thread::spawn;
+use std::thread;
 
 use sys_util::{EventFd, GuestMemory, Poller};
 
@@ -172,16 +172,23 @@ impl VirtioDevice for Rng {
         let queue = queues.remove(0);
 
         if let Some(random_file) = self.random_file.take() {
-            spawn(move || {
-                let mut worker = Worker {
-                    queue: queue,
-                    mem: mem,
-                    random_file: random_file,
-                    interrupt_status: status,
-                    interrupt_evt: interrupt_evt,
-                };
-                worker.run(queue_evts.remove(0), kill_evt);
-            });
+            let worker_result = thread::Builder::new()
+                .name("virtio_rng".to_string())
+                .spawn(move || {
+                    let mut worker = Worker {
+                        queue: queue,
+                        mem: mem,
+                        random_file: random_file,
+                        interrupt_status: status,
+                        interrupt_evt: interrupt_evt,
+                    };
+                    worker.run(queue_evts.remove(0), kill_evt);
+                });
+
+            if let Err(e) = worker_result {
+                error!("failed to spawn virtio_rng worker: {}", e);
+                return;
+            }
         }
     }
 }