From e9f50698dd1192d35082317faa4cef14b9b03f60 Mon Sep 17 00:00:00 2001 From: Wildan M Date: Sun, 26 Apr 2026 15:37:40 +0700 Subject: [PATCH] Remove ContextRef upgrade --- src/context/mod.rs | 9 +++++---- src/debugger.rs | 2 +- src/scheme/sys/block.rs | 2 +- src/scheme/sys/context.rs | 2 +- src/scheme/sys/fdstat.rs | 2 +- src/scheme/sys/iostat.rs | 2 +- src/scheme/sys/stat.rs | 1 - src/scheme/sys/syscall.rs | 2 +- 8 files changed, 11 insertions(+), 11 deletions(-) diff --git a/src/context/mod.rs b/src/context/mod.rs index 81be09934c..27c23c7312 100644 --- a/src/context/mod.rs +++ b/src/context/mod.rs @@ -6,7 +6,7 @@ use alloc::{ collections::{BTreeSet, VecDeque}, sync::{Arc, Weak}, }; -use core::num::NonZeroUsize; +use core::{num::NonZeroUsize, ops::Deref}; use crate::{ context::memory::AddrSpaceWrapper, @@ -166,9 +166,10 @@ pub fn is_current(context: &Arc) -> bool { #[derive(Clone)] pub struct ContextRef(pub Arc); -impl ContextRef { - pub fn upgrade(&self) -> Option> { - Some(Arc::clone(&self.0)) +impl Deref for ContextRef { + type Target = Arc; + fn deref(&self) -> &Self::Target { + &self.0 } } diff --git a/src/debugger.rs b/src/debugger.rs index 8e6c7e0e93..60e59737d5 100644 --- a/src/debugger.rs +++ b/src/debugger.rs @@ -23,7 +23,7 @@ pub unsafe fn debugger(target_id: Option<*const ContextLock>, token: &mut CleanL { let mut contexts = contexts(token.downgrade()); let (contexts, mut token) = contexts.token_split(); - for context_arc in contexts.iter().filter_map(|x| x.upgrade()) { + for context_arc in contexts.iter() { if target_id.map_or(false, |target_id| Arc::as_ptr(&context_arc) != target_id) { continue; } diff --git a/src/scheme/sys/block.rs b/src/scheme/sys/block.rs index 7ca46c8d4a..8d3b8e4f4e 100644 --- a/src/scheme/sys/block.rs +++ b/src/scheme/sys/block.rs @@ -11,7 +11,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result> { { let mut contexts = contexts(token.downgrade()); let (contexts, mut token) = contexts.token_split(); - for context_lock in contexts.iter().filter_map(|x| x.upgrade()) { + for context_lock in contexts.iter() { let context = context_lock.read(token.token()); rows.push((context.pid, context.name, context.status_reason)); } diff --git a/src/scheme/sys/context.rs b/src/scheme/sys/context.rs index 8ed3ce926e..30e3afa502 100644 --- a/src/scheme/sys/context.rs +++ b/src/scheme/sys/context.rs @@ -17,7 +17,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result> { { let mut contexts = contexts(token.downgrade()); let (contexts, mut token) = contexts.token_split(); - for context_ref in contexts.iter().filter_map(|x| x.upgrade()) { + for context_ref in contexts.iter() { let context = context_ref.read(token.token()); let addr_space = context.addr_space().map(|a| a.clone()); diff --git a/src/scheme/sys/fdstat.rs b/src/scheme/sys/fdstat.rs index 304306b397..59965be76f 100644 --- a/src/scheme/sys/fdstat.rs +++ b/src/scheme/sys/fdstat.rs @@ -38,7 +38,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result> { let mut contexts = contexts(token.token()); let (contexts, mut token) = contexts.token_split(); - 'contexts: for context in contexts.iter().filter_map(|x| x.upgrade()) { + 'contexts: for context in contexts.iter() { let mut context_guard = context.read(token.token()); let (context, token) = context_guard.token_split(); let mut files_guard = context.files.read(token); diff --git a/src/scheme/sys/iostat.rs b/src/scheme/sys/iostat.rs index 468d40dd93..d3bdd81dba 100644 --- a/src/scheme/sys/iostat.rs +++ b/src/scheme/sys/iostat.rs @@ -24,7 +24,7 @@ fn inner(fpath_user: UserSliceRw, token: &mut CleanLockToken) -> Result> { let mut contexts = context::contexts(token.downgrade()); let (contexts, mut token) = contexts.token_split(); - for context_ref in contexts.iter().filter_map(|x| x.upgrade()) { + for context_ref in contexts.iter() { let mut current = context_ref.read(token.token()); let (context, mut token) = current.token_split(); rows.push(( diff --git a/src/scheme/sys/stat.rs b/src/scheme/sys/stat.rs index 4149d673a1..877d252f4f 100644 --- a/src/scheme/sys/stat.rs +++ b/src/scheme/sys/stat.rs @@ -81,7 +81,6 @@ fn get_contexts_stats(token: &mut CleanLockToken) -> (u64, u64) { let (contexts, mut token) = contexts.token_split(); contexts .iter() - .filter_map(|x| x.upgrade()) .map(|context| context.read(token.token()).status.clone()) .collect::>() }; diff --git a/src/scheme/sys/syscall.rs b/src/scheme/sys/syscall.rs index f4b42f0a41..8bce7ab90c 100644 --- a/src/scheme/sys/syscall.rs +++ b/src/scheme/sys/syscall.rs @@ -15,7 +15,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result> { { let mut contexts = contexts(token.downgrade()); let (contexts, mut token) = contexts.token_split(); - for context_ref in contexts.iter().filter_map(|x| x.upgrade()) { + for context_ref in contexts.iter() { let context = context_ref.read(token.token()); rows.push((context.pid, context.name, context.current_syscall())); }