TmpFileObject

Struct TmpFileObject 

Source
pub struct TmpFileObject {
    node: Arc<TmpNode>,
    position: RwLock<u64>,
    device_guard: Option<Arc<dyn Device>>,
    socket_ref: Option<Arc<dyn SocketObject>>,
    mmap_backing: RwLock<Option<Box<[Page]>>>,
    mmap_backing_len: Mutex<usize>,
    mmap_ranges: RwLock<BTreeMap<usize, MmapRange>>,
}
Expand description

File object for TmpFS operations

TmpFileObject represents an open file or directory in TmpFS.

It maintains the current file position and, for device files, an optional device guard. For socket files, it maintains a reference to the socket object.

Fields§

§node: Arc<TmpNode>

Reference to the TmpNode

§position: RwLock<u64>

Current file position

§device_guard: Option<Arc<dyn Device>>

Optional device guard for device files

§socket_ref: Option<Arc<dyn SocketObject>>

Optional socket reference for socket files

§mmap_backing: RwLock<Option<Box<[Page]>>>

Page-aligned backing for private mmap operations

§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 TmpFileObject

Source

pub fn new_regular(node: Arc<TmpNode>) -> Self

Create a new file object for regular files

Source

pub fn new_directory(node: Arc<TmpNode>) -> Self

Create a new file object for directories

Source

pub fn new_device(node: Arc<TmpNode>, info: DeviceFileInfo) -> Self

Create a new file object for device files

Source

pub fn new_socket(node: Arc<TmpNode>, info: SocketFileInfo) -> Self

Create a new file object for socket files

Source

fn ensure_mmap_backing( &self, file_size: usize, required_size: usize, ) -> Result<(), StreamError>

Source

fn read_device(&self, buffer: &mut [u8]) -> Result<usize, FileSystemError>

Source

fn read_regular_file(&self, buffer: &mut [u8]) -> Result<usize, FileSystemError>

Source

fn write_device(&self, buffer: &[u8]) -> Result<usize, FileSystemError>

Source

fn write_regular_file(&self, buffer: &[u8]) -> Result<usize, FileSystemError>

Source

fn read_socket(&self, buffer: &mut [u8]) -> Result<usize, StreamError>

Source

fn write_socket(&self, buffer: &[u8]) -> Result<usize, StreamError>

Trait Implementations§

Source§

impl ControlOps for TmpFileObject

Source§

fn control(&self, _command: u32, _arg: usize) -> Result<i32, &'static str>

Perform a control operation Read more
Source§

fn supported_control_commands(&self) -> Vec<(u32, &'static str)>

Get a list of supported control commands Read more
Source§

impl FileObject for TmpFileObject

Source§

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>

Write data to a specific offset without changing internal position Read more
Source§

fn seek(&self, pos: SeekFrom) -> Result<u64, StreamError>

Seek to a position in the file stream
Source§

fn metadata(&self) -> Result<FileMetadata, StreamError>

Get metadata about the file
Source§

fn truncate(&self, size: u64) -> Result<(), StreamError>

Truncate the file to the specified size Read more
Source§

fn as_any(&self) -> &dyn Any

Source§

fn sync(&self) -> Result<(), StreamError>

Synchronize file content to storage Read more
Source§

impl MemoryMappingOps for TmpFileObject

Source§

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>

Get mapping information with sharing intent. Read more
Source§

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)

Notification that a mapping has been removed Read more
Source§

fn supports_mmap(&self) -> bool

Check if memory mapping is supported Read more
Source§

fn resolve_fault( &self, access: &AccessKind, map: &VirtualMemoryMap, ) -> Result<ResolveFaultResult, ResolveFaultError>

Source§

fn mmap_owner_name(&self) -> String

Diagnostic helper: return a short owner name for logging Read more
Source§

impl PageCacheCapable for TmpFileObject

Source§

fn cache_id(&self) -> CacheId

Returns a stable CacheId for this file for the lifetime of the underlying filesystem instance.
Source§

impl Selectable for TmpFileObject

Source§

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 current_ready(&self, interest: ReadyInterest) -> ReadySet

Return current readiness for the given interest set.
Source§

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

Query whether non-blocking I/O semantics are enabled on this object.
Source§

impl StreamOps for TmpFileObject

Source§

fn read(&self, buffer: &mut [u8]) -> Result<usize, StreamError>

Read data from the stream
Source§

fn write(&self, buffer: &[u8]) -> Result<usize, StreamError>

Write data to the stream

Auto Trait Implementations§

§

impl !Freeze for TmpFileObject

§

impl !RefUnwindSafe for TmpFileObject

§

impl Send for TmpFileObject

§

impl Sync for TmpFileObject

§

impl Unpin for TmpFileObject

§

impl !UnwindSafe for TmpFileObject

Blanket Implementations§

§

impl<T> Any for T
where T: 'static + ?Sized,

§

fn type_id(&self) -> TypeId

Gets the TypeId of self. Read more
§

impl<T> Borrow<T> for T
where T: ?Sized,

§

fn borrow(&self) -> &T

Immutably borrows from an owned value. Read more
§

impl<T> BorrowMut<T> for T
where T: ?Sized,

§

fn borrow_mut(&mut self) -> &mut T

Mutably borrows from an owned value. Read more
§

impl<T> From<T> for T

§

fn from(t: T) -> T

Returns the argument unchanged.

§

impl<T, U> Into<U> for T
where U: From<T>,

§

fn into(self) -> U

Calls U::from(self).

That is, this conversion is whatever the implementation of [From]<T> for U chooses to do.

§

impl<T, U> TryFrom<U> for T
where U: Into<T>,

§

type Error = Infallible

The type returned in the event of a conversion error.
§

fn try_from(value: U) -> Result<T, <T as TryFrom<U>>::Error>

Performs the conversion.
§

impl<T, U> TryInto<U> for T
where U: TryFrom<T>,

§

type Error = <U as TryFrom<T>>::Error

The type returned in the event of a conversion error.
§

fn try_into(self) -> Result<U, <U as TryFrom<T>>::Error>

Performs the conversion.