pub struct Fat32FileObject {
node: Arc<Fat32Node>,
position: RwLock<usize>,
parent_cluster: u32,
dirty: Mutex<bool>,
mmap_backing: RwLock<Option<Box<[Page]>>>,
mmap_backing_len: Mutex<usize>,
mmap_ranges: RwLock<BTreeMap<usize, MmapRange>>,
}Expand description
FAT32 file object for regular files
Fields§
§node: Arc<Fat32Node>Reference to the FAT32 node
position: RwLock<usize>Current file position
parent_cluster: u32Parent directory cluster (for directory entry updates)
dirty: Mutex<bool>File-level dirty flag to avoid unnecessary writeback
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 Fat32FileObject
impl Fat32FileObject
pub fn new(node: Arc<Fat32Node>, parent_cluster: u32) -> Self
Sourcefn sync_to_disk(&self) -> Result<(), StreamError>
fn sync_to_disk(&self) -> Result<(), StreamError>
Write back current page-cache-backed content to disk if dirty.
fn ensure_mmap_backing( &self, file_size: usize, required_size: usize, ) -> Result<(), StreamError>
Sourcefn update_directory_entry(
&self,
fat32_fs: &Fat32FileSystem,
cluster: u32,
size: usize,
) -> Result<(), StreamError>
fn update_directory_entry( &self, fat32_fs: &Fat32FileSystem, cluster: u32, size: usize, ) -> Result<(), StreamError>
Update the directory entry for this file
Trait Implementations§
Source§impl ControlOps for Fat32FileObject
impl ControlOps for Fat32FileObject
Source§impl Debug for Fat32FileObject
impl Debug for Fat32FileObject
Source§impl Drop for Fat32FileObject
impl Drop for Fat32FileObject
Source§impl FileObject for Fat32FileObject
impl FileObject for Fat32FileObject
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, from: SeekFrom) -> Result<u64, StreamError>
fn seek(&self, from: 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 sync(&self) -> Result<(), StreamError>
fn sync(&self) -> Result<(), StreamError>
Synchronize file content to storage Read more
fn as_any(&self) -> &dyn Any
Source§impl MemoryMappingOps for Fat32FileObject
impl MemoryMappingOps for Fat32FileObject
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 Fat32FileObject
impl PageCacheCapable for Fat32FileObject
Source§impl Selectable for Fat32FileObject
impl Selectable for Fat32FileObject
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 Fat32FileObject
impl StreamOps for Fat32FileObject
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