From 11382524d1d23cc6d41adf977a72138baa39e38d Mon Sep 17 00:00:00 2001 From: Ruihan Li Date: Thu, 7 Nov 2024 22:57:03 +0800 Subject: [PATCH] Use new `SpinLock` APIs in `wait.rs` --- ostd/src/sync/wait.rs | 10 +++++----- 1 file changed, 5 insertions(+), 5 deletions(-) diff --git a/ostd/src/sync/wait.rs b/ostd/src/sync/wait.rs index 11d057e62..94199aa40 100644 --- a/ostd/src/sync/wait.rs +++ b/ostd/src/sync/wait.rs @@ -3,7 +3,7 @@ use alloc::{collections::VecDeque, sync::Arc}; use core::sync::atomic::{AtomicBool, AtomicU32, Ordering}; -use super::SpinLock; +use super::{LocalIrqDisabled, SpinLock}; use crate::task::{scheduler, Task}; // # Explanation on the memory orders @@ -43,7 +43,7 @@ use crate::task::{scheduler, Task}; pub struct WaitQueue { // A copy of `wakers.len()`, used for the lock-free fast path in `wake_one` and `wake_all`. num_wakers: AtomicU32, - wakers: SpinLock>>, + wakers: SpinLock>, LocalIrqDisabled>, } impl WaitQueue { @@ -92,7 +92,7 @@ impl WaitQueue { } loop { - let mut wakers = self.wakers.disable_irq().lock(); + let mut wakers = self.wakers.lock(); let Some(waker) = wakers.pop_front() else { return false; }; @@ -116,7 +116,7 @@ impl WaitQueue { let mut num_woken = 0; loop { - let mut wakers = self.wakers.disable_irq().lock(); + let mut wakers = self.wakers.lock(); let Some(waker) = wakers.pop_front() else { break; }; @@ -142,7 +142,7 @@ impl WaitQueue { /// Enqueues the input [`Waker`] to the wait queue. #[doc(hidden)] pub fn enqueue(&self, waker: Arc) { - let mut wakers = self.wakers.disable_irq().lock(); + let mut wakers = self.wakers.lock(); wakers.push_back(waker); self.num_wakers.fetch_add(1, Ordering::Acquire); }