Add lock token to FileDescription, without borrow check

This commit is contained in:
Wildan M
2026-03-09 11:23:51 +07:00
parent 6085c8935c
commit f40b84a5cc
14 changed files with 79 additions and 78 deletions
+7 -7
View File
@@ -4,19 +4,19 @@ use core::sync::atomic::{AtomicBool, AtomicUsize, Ordering};
use syscall::{data::GlobalSchemes, CallFlags};
use hashbrown::{hash_map::DefaultHashBuilder, HashMap};
use spin::{Mutex, RwLock as SpinRwLock};
use spin::Mutex;
use crate::{
context::{
context::{bulk_add_fds, bulk_insert_fds},
file::{FileDescription, InternalFlags},
file::{FileDescription, InternalFlags, LockedFileDescription},
},
event,
sync::{CleanLockToken, RwLock, WaitCondition, L1},
sync::{CleanLockToken, L1, RwLock, WaitCondition},
syscall::{
data::Stat,
error::{Error, Result, EAGAIN, EBADF, EINTR, EINVAL, ENOENT, EPIPE},
flag::{EventFlags, EVENT_READ, EVENT_WRITE, MODE_FIFO, O_NONBLOCK},
error::{EAGAIN, EBADF, EINTR, EINVAL, ENOENT, EPIPE, Error, Result},
flag::{EVENT_READ, EVENT_WRITE, EventFlags, MODE_FIFO, O_NONBLOCK},
usercopy::{UserSliceRo, UserSliceRw, UserSliceWo},
},
};
@@ -371,7 +371,7 @@ impl KernelScheme for PipeScheme {
fn kfdwrite(
&self,
id: usize,
mut descs: Vec<Arc<SpinRwLock<FileDescription>>>,
mut descs: Vec<Arc<LockedFileDescription>>,
_flags: CallFlags,
_args: u64,
_metadata: &[u64],
@@ -499,5 +499,5 @@ pub struct Pipe {
reader_is_alive: AtomicBool, // starts set, unset when reader closes
writer_is_alive: AtomicBool, // starts set, unset when writer closes
has_run_dup: AtomicBool,
fd_queue: Mutex<VecDeque<Arc<SpinRwLock<FileDescription>>>>,
fd_queue: Mutex<VecDeque<Arc<LockedFileDescription>>>,
}