pub struct Ext2DirectoryObject {
inode_number: u32,
file_id: u64,
position: Mutex<u64>,
filesystem: RwLock<Option<Weak<dyn FileSystemOperations>>>,
cached_entries: Mutex<Option<Vec<DirectoryEntryInternal>>>,
cache_generation: Mutex<u32>,
}Expand description
ext2 Directory Object
Handles directory operations for directories in the ext2 filesystem.
Fields§
§inode_number: u32Inode number of the directory
file_id: u64File ID
position: Mutex<u64>Current position in directory listing
filesystem: RwLock<Option<Weak<dyn FileSystemOperations>>>Weak reference to the filesystem
cached_entries: Mutex<Option<Vec<DirectoryEntryInternal>>>Cached directory entries to avoid re-reading on every access
cache_generation: Mutex<u32>Cache generation (based on directory modification time) to detect stale cache
Implementations§
Source§impl Ext2DirectoryObject
impl Ext2DirectoryObject
Sourcepub fn set_filesystem(&self, fs: Weak<dyn FileSystemOperations>)
pub fn set_filesystem(&self, fs: Weak<dyn FileSystemOperations>)
Set the filesystem reference
Sourcefn get_cached_entries(&self) -> Result<Vec<DirectoryEntryInternal>, StreamError>
fn get_cached_entries(&self) -> Result<Vec<DirectoryEntryInternal>, StreamError>
Get cached directory entries or read them if not cached
Trait Implementations§
Source§impl ControlOps for Ext2DirectoryObject
impl ControlOps for Ext2DirectoryObject
Source§impl Debug for Ext2DirectoryObject
impl Debug for Ext2DirectoryObject
Source§impl FileObject for Ext2DirectoryObject
impl FileObject for Ext2DirectoryObject
Source§fn metadata(&self) -> Result<FileMetadata, StreamError>
fn metadata(&self) -> Result<FileMetadata, StreamError>
Get metadata about the file
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
fn as_any(&self) -> &dyn Any
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 truncate(&self, size: u64) -> Result<(), StreamError>
fn truncate(&self, size: u64) -> Result<(), StreamError>
Truncate the file to the specified size Read more
Source§fn sync(&self) -> Result<(), StreamError>
fn sync(&self) -> Result<(), StreamError>
Synchronize file content to storage Read more
Source§impl MemoryMappingOps for Ext2DirectoryObject
impl MemoryMappingOps for Ext2DirectoryObject
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 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
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
fn resolve_fault( &self, access: &AccessKind, map: &VirtualMemoryMap, ) -> Result<ResolveFaultResult, ResolveFaultError>
Source§impl Selectable for Ext2DirectoryObject
impl Selectable for Ext2DirectoryObject
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 is_nonblocking(&self) -> bool
fn is_nonblocking(&self) -> bool
Query whether non-blocking I/O semantics are enabled on this object.
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§impl StreamOps for Ext2DirectoryObject
impl StreamOps for Ext2DirectoryObject
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