pub struct Ext2FileObject {
inode_number: u32,
file_id: u64,
position: Mutex<u64>,
size_override: Mutex<Option<usize>>,
dirty: Mutex<bool>,
filesystem: RwLock<Option<Weak<dyn FileSystemOperations>>>,
mmap_backing: RwLock<Option<Box<[Page]>>>,
mmap_backing_len: Mutex<usize>,
mmap_ranges: RwLock<BTreeMap<usize, MmapRange>>,
}Expand description
ext2 File Object
Handles file operations for regular files in the ext2 filesystem.
Fields§
§inode_number: u32Inode number of the file
file_id: u64File ID
position: Mutex<u64>Current position in the file
size_override: Mutex<Option<usize>>Optional logical size override after in-memory writes (not yet flushed)
dirty: Mutex<bool>Dirty flag indicating in-memory changes not yet persisted to disk
filesystem: RwLock<Option<Weak<dyn FileSystemOperations>>>Weak reference to the filesystem
mmap_backing: RwLock<Option<Box<[Page]>>>Page-aligned backing for mmap operations (lazy initialized)
mmap_backing_len: Mutex<usize>Byte length of the mmap backing (file size snapshot)
mmap_ranges: RwLock<BTreeMap<usize, MmapRange>>Active mmap ranges keyed by starting virtual address
Implementations§
Source§impl Ext2FileObject
impl Ext2FileObject
Sourcepub fn set_filesystem(&self, fs: Weak<dyn FileSystemOperations>)
pub fn set_filesystem(&self, fs: Weak<dyn FileSystemOperations>)
Set the filesystem reference
Sourcefn sync_to_disk(&self) -> Result<(), StreamError>
fn sync_to_disk(&self) -> Result<(), StreamError>
Flush current page-cache-backed content to disk.
fn effective_size(&self, inode_size: usize) -> usize
fn ensure_mmap_backing( &self, file_size: usize, required_size: usize, ) -> Result<(), StreamError>
Trait Implementations§
Source§impl ControlOps for Ext2FileObject
impl ControlOps for Ext2FileObject
Source§impl Debug for Ext2FileObject
impl Debug for Ext2FileObject
Source§impl Drop for Ext2FileObject
impl Drop for Ext2FileObject
Source§impl FileObject for Ext2FileObject
impl FileObject for Ext2FileObject
Source§fn metadata(&self) -> Result<FileMetadata, StreamError>
fn metadata(&self) -> Result<FileMetadata, StreamError>
Get metadata about the file
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 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 sync(&self) -> Result<(), StreamError>
fn sync(&self) -> Result<(), StreamError>
Synchronize file content to storage Read more
Source§impl MemoryMappingOps for Ext2FileObject
impl MemoryMappingOps for Ext2FileObject
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
fn resolve_fault( &self, access: &AccessKind, map: &VirtualMemoryMap, ) -> Result<ResolveFaultResult, ResolveFaultError>
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§impl PageCacheCapable for Ext2FileObject
impl PageCacheCapable for Ext2FileObject
Source§impl Selectable for Ext2FileObject
impl Selectable for Ext2FileObject
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 Ext2FileObject
impl StreamOps for Ext2FileObject
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