From 73e0b30785f83303c999fa01a79bf74bb754f8b6 Mon Sep 17 00:00:00 2001 From: Zejun Zhao Date: Wed, 5 Mar 2025 14:07:22 +0800 Subject: [PATCH] Eliminate redundant check in hot path --- kernel/src/sched/sched_class/mod.rs | 6 ++---- 1 file changed, 2 insertions(+), 4 deletions(-) diff --git a/kernel/src/sched/sched_class/mod.rs b/kernel/src/sched/sched_class/mod.rs index 7127ae6b2..6e5159e5e 100644 --- a/kernel/src/sched/sched_class/mod.rs +++ b/kernel/src/sched/sched_class/mod.rs @@ -322,11 +322,9 @@ impl LocalRunQueue for PerCpuClassRqSet { fn pick_next_current(&mut self) -> Option<&Arc> { self.pick_next_entity().and_then(|next| { - let next_ptr = Arc::as_ptr(&next.0); + // We guarantee that a task can appear at once in a `PerCpuClassRqSet`. So, the `next` cannot be the same + // as the current task here. if let Some((old, _)) = self.current.replace((next, CurrentRuntime::new())) { - if Arc::as_ptr(&old.0) == next_ptr { - return None; - } self.enqueue_entity(old, None); } self.current.as_ref().map(|((task, _), _)| task)