pub struct BlockDeviceFile {
pub dentry: Arc<Dentry>,
pub inode: Arc<dyn Inode>,
dev: u64,
blk_index: Option<usize>,
pub flags: OpenFlags,
offset: SpinLock<usize>,
}Expand description
块设备文件
Fields§
§dentry: Arc<Dentry>关联的 dentry
inode: Arc<dyn Inode>关联的 inode
dev: u64设备号
blk_index: Option<usize>块设备驱动索引(在 BLK_DRIVERS 中)
flags: OpenFlags打开标志位
offset: SpinLock<usize>当前偏移量(字节)
Implementations§
Trait Implementations§
Source§impl File for BlockDeviceFile
impl File for BlockDeviceFile
Source§fn metadata(&self) -> Result<InodeMetadata, FsError>
fn metadata(&self) -> Result<InodeMetadata, FsError>
获取文件元数据
Source§fn lseek(&self, offset: isize, whence: SeekWhence) -> Result<usize, FsError>
fn lseek(&self, offset: isize, whence: SeekWhence) -> Result<usize, FsError>
设置文件偏移量(可选方法) Read more
Source§fn set_status_flags(&self, _flags: OpenFlags) -> Result<(), FsError>
fn set_status_flags(&self, _flags: OpenFlags) -> Result<(), FsError>
设置文件状态标志(可选方法,用于 F_SETFL) Read more
Source§fn get_pipe_size(&self) -> Result<usize, FsError>
fn get_pipe_size(&self) -> Result<usize, FsError>
获取管道大小(可选方法,用于 F_GETPIPE_SZ) Read more
Source§fn set_pipe_size(&self, _size: usize) -> Result<(), FsError>
fn set_pipe_size(&self, _size: usize) -> Result<(), FsError>
设置管道大小(可选方法,用于 F_SETPIPE_SZ) Read more
Source§fn set_owner(&self, _pid: i32) -> Result<(), FsError>
fn set_owner(&self, _pid: i32) -> Result<(), FsError>
设置异步 I/O 所有者(可选方法,用于 F_SETOWN) Read more
Source§fn read_at(&self, _offset: usize, _buf: &mut [u8]) -> Result<usize, FsError>
fn read_at(&self, _offset: usize, _buf: &mut [u8]) -> Result<usize, FsError>
从指定位置读取数据(可选方法,用于 pread64/preadv) Read more
Source§fn write_at(&self, _offset: usize, _buf: &[u8]) -> Result<usize, FsError>
fn write_at(&self, _offset: usize, _buf: &[u8]) -> Result<usize, FsError>
向指定位置写入数据(可选方法,用于 pwrite64/pwritev) Read more