diff options
author | Zach Reizner <zachr@google.com> | 2019-01-23 19:04:43 -0800 |
---|---|---|
committer | chrome-bot <chrome-bot@chromium.org> | 2019-01-26 00:59:57 -0800 |
commit | 3ba0098d6764df4a7b2c885f0cf5263b4062c357 (patch) | |
tree | 87e285eb55498f152457ffacdf66345feb5ed037 /devices/src/bus.rs | |
parent | 1be25dc3d2ce8afe41d0fe7fe7b157c3f1787b50 (diff) | |
download | crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.gz crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.bz2 crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.lz crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.xz crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.tar.zst crosvm-3ba0098d6764df4a7b2c885f0cf5263b4062c357.zip |
crosvm: add debug labels to devices for improved SIGCHLD logs
Each device (Bus, Pci, Proxy, etc), gets a debug label associated with it. When a child is spawned, the debug label for it is stored in a map with the child's pid as the key. If a SIGCHLD is handled, this map is used to print a more helpful message about exactly which child died. BUG=None TEST=run with sandboxing and a faulty child device check logs for message about child died the child should have a debug label Change-Id: I61fbbee0a8e701249533a7a3a6a1ad48840f12e5 Reviewed-on: https://chromium-review.googlesource.com/1432835 Commit-Ready: Chih-Yang Hsia <paulhsia@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Tested-by: Zach Reizner <zachr@chromium.org> Reviewed-by: Daniel Verkamp <dverkamp@chromium.org>
Diffstat (limited to 'devices/src/bus.rs')
-rw-r--r-- | devices/src/bus.rs | 12 |
1 files changed, 11 insertions, 1 deletions
diff --git a/devices/src/bus.rs b/devices/src/bus.rs index 5eb09a2..1c21661 100644 --- a/devices/src/bus.rs +++ b/devices/src/bus.rs @@ -17,6 +17,8 @@ use sync::Mutex; /// into its allocated portion of address space. #[allow(unused_variables)] pub trait BusDevice: Send { + /// Returns a label suitable for debug output. + fn debug_label(&self) -> String; /// Reads at `offset` from this device fn read(&mut self, offset: u64, data: &mut [u8]) {} /// Writes at `offset` into this device @@ -202,10 +204,18 @@ mod tests { use super::*; struct DummyDevice; - impl BusDevice for DummyDevice {} + impl BusDevice for DummyDevice { + fn debug_label(&self) -> String { + "dummy device".to_owned() + } + } struct ConstantDevice; impl BusDevice for ConstantDevice { + fn debug_label(&self) -> String { + "constant device".to_owned() + } + fn read(&mut self, offset: u64, data: &mut [u8]) { for (i, v) in data.iter_mut().enumerate() { *v = (offset as u8) + (i as u8); |