pub struct CharDeviceFile {
pub dentry: Arc<Dentry>,
pub inode: Arc<dyn Inode>,
dev: u64,
driver: Option<Arc<dyn Driver>>,
pub flags: OpenFlags,
offset: SpinLock<usize>,
termios: SpinLock<Termios>,
winsize: SpinLock<WinSize>,
}Expand description
字符设备文件
Fields§
§dentry: Arc<Dentry>关联的 dentry
inode: Arc<dyn Inode>关联的 inode
dev: u64设备号
driver: Option<Arc<dyn Driver>>设备驱动(缓存)
flags: OpenFlags打开标志位
offset: SpinLock<usize>偏移量(某些字符设备可能需要)
termios: SpinLock<Termios>终端属性(用于 TTY 设备)
winsize: SpinLock<WinSize>终端窗口大小(用于 TTY 设备)
Implementations§
Source§impl CharDeviceFile
impl CharDeviceFile
Source§impl CharDeviceFile
impl CharDeviceFile
Sourcefn console_ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
fn console_ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
控制台设备 ioctl 处理
Sourcefn misc_ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
fn misc_ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
MISC 设备 ioctl 处理
Trait Implementations§
Source§impl File for CharDeviceFile
impl File for CharDeviceFile
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 ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
fn ioctl(&self, request: u32, arg: usize) -> Result<isize, FsError>
执行设备特定的控制操作(可选方法,用于 ioctl) 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