1use std::fmt;
2
3use heim_common::prelude::*;
4
5use crate::sys;
6
7pub struct CpuStats(sys::CpuStats);
11
12wrap!(CpuStats, sys::CpuStats);
13
14impl CpuStats {
15    pub fn ctx_switches(&self) -> u64 {
17        self.as_ref().ctx_switches()
18    }
19
20    pub fn interrupts(&self) -> u64 {
22        self.as_ref().interrupts()
23    }
24}
25
26impl fmt::Debug for CpuStats {
27    fn fmt(&self, f: &mut fmt::Formatter) -> fmt::Result {
28        f.debug_struct("CpuStats")
29            .field("ctx_switches", &self.ctx_switches())
30            .field("interrupts", &self.interrupts())
31            .finish()
32    }
33}
34
35pub fn stats() -> impl Future<Output = Result<CpuStats>> {
39    sys::stats().map_ok(Into::into)
40}