pub struct DevFileObject {
node: Arc<DevNode>,
position: RwLock<u64>,
device_id: usize,
device_type: DeviceType,
device_guard: Option<Arc<dyn Device>>,
}Expand description
A file object for device files in DevFS
This struct provides a FileObject implementation that delegates device operations to the underlying device registered in DeviceManager.
Fields§
§node: Arc<DevNode>Reference to the DevNode
position: RwLock<u64>Current file position (for seekable devices)
device_id: usizeDevice ID for lookup in DeviceManager
device_type: DeviceTypeDevice type
device_guard: Option<Arc<dyn Device>>Optional device guard for device files
Implementations§
Source§impl DevFileObject
impl DevFileObject
Sourcepub fn new(
node: Arc<DevNode>,
device_id: usize,
device_type: DeviceType,
) -> Result<Self, FileSystemError>
pub fn new( node: Arc<DevNode>, device_id: usize, device_type: DeviceType, ) -> Result<Self, FileSystemError>
Create a new file object for device files
Sourcefn read_device(&self, buffer: &mut [u8]) -> Result<usize, FileSystemError>
fn read_device(&self, buffer: &mut [u8]) -> Result<usize, FileSystemError>
Read from the underlying device at current position
Sourcefn write_device(&self, buffer: &[u8]) -> Result<usize, FileSystemError>
fn write_device(&self, buffer: &[u8]) -> Result<usize, FileSystemError>
Write to the underlying device at current position
Trait Implementations§
Source§impl ControlOps for DevFileObject
impl ControlOps for DevFileObject
Source§impl FileObject for DevFileObject
impl FileObject for DevFileObject
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 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 sync(&self) -> Result<(), StreamError>
fn sync(&self) -> Result<(), StreamError>
Synchronize file content to storage Read more
Source§impl MemoryMappingOps for DevFileObject
impl MemoryMappingOps for DevFileObject
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 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 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 DevFileObject
impl Selectable for DevFileObject
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 DevFileObject
impl StreamOps for DevFileObject
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