pub struct VfsFileObject {
inner: Arc<dyn FileObject>,
vfs_entry: Arc<VfsEntry>,
mount_point: Arc<MountPoint>,
original_path: String,
}Expand description
VfsFileObject wraps a filesystem-specific FileObject with VFS-layer information
This wrapper provides the VFS layer with access to path hierarchy information while delegating actual file operations to the underlying FileSystem implementation.
Fields§
§inner: Arc<dyn FileObject>The underlying FileObject from the filesystem implementation
vfs_entry: Arc<VfsEntry>The VfsEntry this FileObject was created from (for *at syscalls)
mount_point: Arc<MountPoint>The mount point containing this VfsEntry
original_path: StringThe original path used to open this file (for debugging/logging)
Implementations§
Source§impl VfsFileObject
impl VfsFileObject
Sourcepub fn new(
inner: Arc<dyn FileObject>,
vfs_entry: Arc<VfsEntry>,
mount_point: Arc<MountPoint>,
original_path: String,
) -> Self
pub fn new( inner: Arc<dyn FileObject>, vfs_entry: Arc<VfsEntry>, mount_point: Arc<MountPoint>, original_path: String, ) -> Self
Create a new VfsFileObject
Sourcepub fn get_vfs_entry(&self) -> &Arc<VfsEntry>
pub fn get_vfs_entry(&self) -> &Arc<VfsEntry>
Get the VfsEntry this FileObject was created from
Sourcepub fn get_mount_point(&self) -> &Arc<MountPoint>
pub fn get_mount_point(&self) -> &Arc<MountPoint>
Get the mount point containing this VfsEntry
Sourcepub fn get_original_path(&self) -> &str
pub fn get_original_path(&self) -> &str
Get the original path used to open this file
Trait Implementations§
Source§impl ControlOps for VfsFileObject
impl ControlOps for VfsFileObject
Source§impl FileObject for VfsFileObject
impl FileObject for VfsFileObject
Source§fn read_at(&self, offset: u64, buffer: &mut [u8]) -> Result<usize, StreamError>
fn read_at(&self, offset: u64, buffer: &mut [u8]) -> Result<usize, StreamError>
Read data from a specific offset without changing internal position Read more
Source§fn write_at(&self, offset: u64, buffer: &[u8]) -> Result<usize, StreamError>
fn write_at(&self, offset: u64, buffer: &[u8]) -> Result<usize, StreamError>
Write data to a specific offset without changing internal position Read more
Source§fn seek(&self, whence: SeekFrom) -> Result<u64, StreamError>
fn seek(&self, whence: SeekFrom) -> Result<u64, StreamError>
Seek to a position in the file stream
Source§fn metadata(&self) -> Result<FileMetadata, StreamError>
fn metadata(&self) -> Result<FileMetadata, StreamError>
Get metadata about the file
Source§fn truncate(&self, size: u64) -> Result<(), StreamError>
fn truncate(&self, size: u64) -> Result<(), StreamError>
Truncate the file to the specified size Read more
fn as_any(&self) -> &dyn Any
Source§fn sync(&self) -> Result<(), StreamError>
fn sync(&self) -> Result<(), StreamError>
Synchronize file content to storage Read more
Source§impl MemoryMappingOps for VfsFileObject
impl MemoryMappingOps for VfsFileObject
Source§fn get_mapping_info(
&self,
offset: usize,
length: usize,
) -> Result<(usize, usize, bool), &'static str>
fn get_mapping_info( &self, offset: usize, length: usize, ) -> Result<(usize, usize, bool), &'static str>
Get mapping information for a region of the object Read more
Source§fn on_mapped(&self, vaddr: usize, paddr: usize, length: usize, offset: usize)
fn on_mapped(&self, vaddr: usize, paddr: usize, length: usize, offset: usize)
Notification that a mapping has been created Read more
Source§fn on_unmapped(&self, vaddr: usize, length: usize)
fn on_unmapped(&self, vaddr: usize, length: usize)
Notification that a mapping has been removed Read more
Source§fn supports_mmap(&self) -> bool
fn supports_mmap(&self) -> bool
Check if memory mapping is supported Read more
Source§fn mmap_owner_name(&self) -> String
fn mmap_owner_name(&self) -> String
Diagnostic helper: return a short owner name for logging Read more
Source§fn get_mapping_info_with(
&self,
offset: usize,
length: usize,
_is_shared: bool,
) -> Result<(usize, usize, bool), &'static str>
fn get_mapping_info_with( &self, offset: usize, length: usize, _is_shared: bool, ) -> Result<(usize, usize, bool), &'static str>
Get mapping information with sharing intent. Read more
fn resolve_fault( &self, access: &AccessKind, map: &VirtualMemoryMap, ) -> Result<ResolveFaultResult, ResolveFaultError>
Source§impl Selectable for VfsFileObject
impl Selectable for VfsFileObject
Source§fn current_ready(&self, interest: ReadyInterest) -> ReadySet
fn current_ready(&self, interest: ReadyInterest) -> ReadySet
Return current readiness for the given interest set.
Source§fn wait_until_ready(
&self,
interest: ReadyInterest,
trapframe: &mut Trapframe,
timeout_ticks: Option<u64>,
) -> SelectWaitOutcome
fn wait_until_ready( &self, interest: ReadyInterest, trapframe: &mut Trapframe, timeout_ticks: Option<u64>, ) -> SelectWaitOutcome
Block the current task using the provided trapframe until the interest
becomes ready or the optional timeout (in ticks) expires. Read more
Source§fn set_nonblocking(&self, enabled: bool)
fn set_nonblocking(&self, enabled: bool)
Enable or disable non-blocking I/O semantics on this object. Read more
Source§fn is_nonblocking(&self) -> bool
fn is_nonblocking(&self) -> bool
Query whether non-blocking I/O semantics are enabled on this object.
Source§impl StreamOps for VfsFileObject
impl StreamOps for VfsFileObject
Source§fn read(&self, buffer: &mut [u8]) -> Result<usize, StreamError>
fn read(&self, buffer: &mut [u8]) -> Result<usize, StreamError>
Read data from the stream
Source§fn write(&self, buffer: &[u8]) -> Result<usize, StreamError>
fn write(&self, buffer: &[u8]) -> Result<usize, StreamError>
Write data to the stream