Solve borrow checking by downgrading waitqueue lock

This commit is contained in:
Wildan M
2026-03-11 09:42:06 +07:00
parent f07725682f
commit 84754dfc5d
3 changed files with 41 additions and 7 deletions
+3 -3
View File
@@ -2,7 +2,7 @@ use alloc::collections::VecDeque;
use syscall::{EAGAIN, EINTR};
use crate::{
sync::{CleanLockToken, LockToken, Mutex, WaitCondition, L1},
sync::{CleanLockToken, LockToken, Mutex, WaitCondition, L1, L2},
syscall::{
error::{Error, Result, EINVAL},
usercopy::UserSliceWo,
@@ -11,7 +11,7 @@ use crate::{
#[derive(Debug)]
pub struct WaitQueue<T> {
inner: Mutex<L1, VecDeque<T>>,
inner: Mutex<L2, VecDeque<T>>,
pub condition: WaitCondition,
}
@@ -38,7 +38,7 @@ impl<T> WaitQueue<T> {
if inner.is_empty() {
if block {
if !self.condition.wait(inner, reason, &mut token) {
if !self.condition.wait_inner(inner, reason, &mut token) {
return Err(Error::new(EINTR));
}
continue;