1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71
use heim_common::units::Time; /// Linux-specific extension for [CpuTime]. /// /// [CpuTime]: ../../struct.CpuTime.html pub trait CpuTimeExt { /// Returns time spent by niced (prioritized) processes executing in user mode, /// this also includes [guest_nice] time. /// /// [guest_nice]: #tymethod.guest_nice fn nice(&self) -> Time; /// Returns time spent waiting for I/O to complete. fn io_wait(&self) -> Time; /// Returns time spent for servicing hardware interrupts. fn irq(&self) -> Time; /// Returns time spent for servicing software interrupts. fn soft_irq(&self) -> Time; /// Returns time spent by other operating systems running in a virtualized environment. fn steal(&self) -> Time; /// Returns time spent running a virtual CPU for guest operating systems /// under the control of the Linux kernel. /// /// ## Compatibility /// /// Available for Linux 2.6.24+, older versions always returns `None`. fn guest(&self) -> Option<Time>; /// Returns time spent running a niced guest /// (virtual CPU for guest operating systems under the control of the Linux kernel) /// /// ## Compatibility /// /// Available for Linux 3.2.0+, older versions always returns `None`. fn guest_nice(&self) -> Option<Time>; } #[cfg(target_os = "linux")] impl CpuTimeExt for crate::CpuTime { fn nice(&self) -> Time { self.as_ref().nice() } fn io_wait(&self) -> Time { self.as_ref().io_wait() } fn irq(&self) -> Time { self.as_ref().irq() } fn soft_irq(&self) -> Time { self.as_ref().soft_irq() } fn steal(&self) -> Time { self.as_ref().steal() } fn guest(&self) -> Option<Time> { self.as_ref().guest() } fn guest_nice(&self) -> Option<Time> { self.as_ref().guest_nice() } }