From 127290f70d2eab20722d6d5bc57681e084f44deb Mon Sep 17 00:00:00 2001 From: Zhang Junyang Date: Mon, 8 Dec 2025 22:54:33 +0800 Subject: [PATCH] Patches for the new borrow checker --- kernel/src/context.rs | 15 +++++++-------- kernel/src/ipc/semaphore/system_v/sem_set.rs | 4 ++-- kernel/src/net/socket/ip/stream/mod.rs | 6 +++--- kernel/src/process/process/timer_manager.rs | 4 +++- 4 files changed, 15 insertions(+), 14 deletions(-) diff --git a/kernel/src/context.rs b/kernel/src/context.rs index dd90ddb27..76940bf9d 100644 --- a/kernel/src/context.rs +++ b/kernel/src/context.rs @@ -55,15 +55,14 @@ pub(crate) struct CurrentUserSpace<'a>(Ref<'a, Option>>); /// If you get the access to the [`Context`]. #[macro_export] macro_rules! current_userspace { - () => {{ - use $crate::{context::CurrentUserSpace, process::posix_thread::AsThreadLocal}; - CurrentUserSpace::new( - ostd::task::Task::current() - .unwrap() - .as_thread_local() - .unwrap(), + () => { + $crate::context::CurrentUserSpace::new( + $crate::process::posix_thread::AsThreadLocal::as_thread_local( + &ostd::task::Task::current().unwrap(), + ) + .unwrap(), ) - }}; + }; } impl<'a> CurrentUserSpace<'a> { diff --git a/kernel/src/ipc/semaphore/system_v/sem_set.rs b/kernel/src/ipc/semaphore/system_v/sem_set.rs index 47d7a99d0..ce1325746 100644 --- a/kernel/src/ipc/semaphore/system_v/sem_set.rs +++ b/kernel/src/ipc/semaphore/system_v/sem_set.rs @@ -254,7 +254,7 @@ impl Drop for SemaphoreSet { let pending_alter = &mut inner.pending_alter; for pending_alter in pending_alter.iter_mut() { pending_alter.set_status(Status::Removed); - if let Some(ref waker) = pending_alter.waker() { + if let Some(waker) = pending_alter.waker() { waker.wake_up(); } } @@ -263,7 +263,7 @@ impl Drop for SemaphoreSet { let pending_const = &mut inner.pending_const; for pending_const in pending_const.iter_mut() { pending_const.set_status(Status::Removed); - if let Some(ref waker) = pending_const.waker() { + if let Some(waker) = pending_const.waker() { waker.wake_up(); } } diff --git a/kernel/src/net/socket/ip/stream/mod.rs b/kernel/src/net/socket/ip/stream/mod.rs index 7c90dfb9e..a561493ce 100644 --- a/kernel/src/net/socket/ip/stream/mod.rs +++ b/kernel/src/net/socket/ip/stream/mod.rs @@ -816,9 +816,9 @@ impl State { fn iface(&self) -> Option<&Arc> { match self { State::Init(_) => None, - State::Connecting(ref connecting_stream) => Some(connecting_stream.iface()), - State::Connected(ref connected_stream) => Some(connected_stream.iface()), - State::Listen(ref listen_stream) => Some(listen_stream.iface()), + State::Connecting(connecting_stream) => Some(connecting_stream.iface()), + State::Connected(connected_stream) => Some(connected_stream.iface()), + State::Listen(listen_stream) => Some(listen_stream.iface()), } } } diff --git a/kernel/src/process/process/timer_manager.rs b/kernel/src/process/process/timer_manager.rs index 995baf308..ad7122c91 100644 --- a/kernel/src/process/process/timer_manager.rs +++ b/kernel/src/process/process/timer_manager.rs @@ -100,7 +100,9 @@ pub struct PosixTimerManager { posix_timers: Mutex>>>, } -fn create_process_timer_callback(process_ref: &Weak) -> impl Fn(TimerGuard) + Clone { +fn create_process_timer_callback( + process_ref: &Weak, +) -> impl Fn(TimerGuard) + Clone + 'static { let current_process = process_ref.clone(); let sent_signal = move || { let signal = KernelSignal::new(SIGALRM);