diff --git a/src/context/file.rs b/src/context/file.rs index 51b25476cf988411a4e6d482b09f58eed9cdf08b..a274ef74faf5de352f911e7b468a83a54de46c77 100644 --- a/src/context/file.rs +++ b/src/context/file.rs @@ -3,12 +3,14 @@ use alloc::sync::Arc; use crate::event; use spin::RwLock; -use crate::scheme::{self, SchemeId}; +use crate::scheme::{self, SchemeNamespace, SchemeId}; use crate::syscall::error::{Result, Error, EBADF}; /// A file description #[derive(Debug)] pub struct FileDescription { + /// The namespace the file was opened from (used for debugging) + pub namespace: SchemeNamespace, /// The scheme that this file refers to pub scheme: SchemeId, /// The number the scheme uses to refer to this file diff --git a/src/syscall/fs.rs b/src/syscall/fs.rs index 0e71fea86811fdef75d714363067217a43720138..00276f726fbecf4f097eb58a093b5b960131de26 100644 --- a/src/syscall/fs.rs +++ b/src/syscall/fs.rs @@ -142,6 +142,7 @@ pub fn open(path: &[u8], flags: usize) -> Result<FileHandle> { let context = context_lock.read(); return context.add_file(FileDescriptor { description: Arc::new(RwLock::new(FileDescription { + namespace: scheme_ns, scheme: scheme_id, number: file_id, flags: flags & !O_CLOEXEC, @@ -163,6 +164,7 @@ pub fn pipe2(fds: &mut [usize], flags: usize) -> Result<usize> { let read_fd = context.add_file(FileDescriptor { description: Arc::new(RwLock::new(FileDescription { + namespace: context.ens, scheme: scheme_id, number: read_id, flags: O_RDONLY | flags & !O_ACCMODE & !O_CLOEXEC, @@ -172,6 +174,7 @@ pub fn pipe2(fds: &mut [usize], flags: usize) -> Result<usize> { let write_fd = context.add_file(FileDescriptor { description: Arc::new(RwLock::new(FileDescription { + namespace: context.ens, scheme: scheme_id, number: write_id, flags: O_WRONLY | flags & !O_ACCMODE & !O_CLOEXEC, @@ -293,6 +296,7 @@ fn duplicate_file(fd: FileHandle, buf: &[u8]) -> Result<FileDescriptor> { Ok(FileDescriptor { description: Arc::new(RwLock::new(FileDescription { + namespace: description.namespace, scheme: description.scheme, number: new_id, flags: description.flags,