Remove ContextRef upgrade
This commit is contained in:
+5
-4
@@ -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<ContextLock>) -> bool {
|
||||
|
||||
#[derive(Clone)]
|
||||
pub struct ContextRef(pub Arc<ContextLock>);
|
||||
impl ContextRef {
|
||||
pub fn upgrade(&self) -> Option<Arc<ContextLock>> {
|
||||
Some(Arc::clone(&self.0))
|
||||
impl Deref for ContextRef {
|
||||
type Target = Arc<ContextLock>;
|
||||
fn deref(&self) -> &Self::Target {
|
||||
&self.0
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
+1
-1
@@ -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;
|
||||
}
|
||||
|
||||
@@ -11,7 +11,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result<Vec<u8>> {
|
||||
{
|
||||
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));
|
||||
}
|
||||
|
||||
@@ -17,7 +17,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result<Vec<u8>> {
|
||||
{
|
||||
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());
|
||||
|
||||
|
||||
@@ -38,7 +38,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result<Vec<u8>> {
|
||||
|
||||
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);
|
||||
|
||||
@@ -24,7 +24,7 @@ fn inner(fpath_user: UserSliceRw, token: &mut CleanLockToken) -> Result<Vec<u8>>
|
||||
{
|
||||
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((
|
||||
|
||||
@@ -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::<Vec<_>>()
|
||||
};
|
||||
|
||||
@@ -15,7 +15,7 @@ pub fn resource(token: &mut CleanLockToken) -> Result<Vec<u8>> {
|
||||
{
|
||||
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()));
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user