diff --git a/src/cpu_stats.rs b/src/cpu_stats.rs index 5d7d84c604..afe10887a3 100644 --- a/src/cpu_stats.rs +++ b/src/cpu_stats.rs @@ -160,7 +160,7 @@ pub fn add_context_switch() { /// Get the number of context switches. #[cfg(feature = "sys_stat")] -pub fn get_context_switch_count() -> u64 { +pub fn get_context_switch_count() -> usize { CONTEXT_SWITCH_COUNT.load(Ordering::Relaxed) } @@ -176,13 +176,13 @@ pub fn add_context() { /// Get the number of contexts created. #[cfg(feature = "sys_stat")] -pub fn get_contexts_count() -> u64 { +pub fn get_contexts_count() -> usize { CONTEXTS_COUNT.load(Ordering::Relaxed) } /// Get the count of each interrupt. #[cfg(feature = "sys_stat")] -pub fn irq_counts() -> Vec { +pub fn irq_counts() -> Vec { IRQ_COUNT .iter() .map(|count| count.load(Ordering::Relaxed)) diff --git a/src/scheme/sys/stat.rs b/src/scheme/sys/stat.rs index f3b39ae2fa..5daccc06c1 100644 --- a/src/scheme/sys/stat.rs +++ b/src/scheme/sys/stat.rs @@ -73,10 +73,12 @@ fn get_contexts_stats(token: &mut CleanLockToken) -> (u64, u64) { let mut running = 0; let mut blocked = 0; - let statuses = contexts(token.token()) + let mut contexts = contexts(token.token()); + let (contexts, mut token) = contexts.token_split(); + let statuses = contexts .iter() .filter_map(ContextRef::upgrade) - .map(|context| context.read_arc().status.clone()) + .map(|context| context.read(token.token()).status.clone()) .collect::>(); for status in statuses {