Add support for DevFS

This commit is contained in:
LI Qing
2023-05-18 16:57:29 +08:00
committed by Tate, Hongliang Tian
parent cc2ab9d5d4
commit 6f321ad7b7
25 changed files with 482 additions and 181 deletions

View File

@ -1,9 +1,12 @@
use super::{
DirentVisitor, FsFlags, Inode, InodeMode, InodeType, IoEvents, Metadata, PageCache, Poller,
DirentVisitor, FsFlags, Inode, InodeMode, InodeType, IoEvents, IoctlCmd, Metadata, PageCache,
Poller,
};
use crate::fs::device::Device;
use crate::prelude::*;
use crate::rights::Full;
use crate::vm::vmo::Vmo;
use alloc::string::String;
use core::time::Duration;
use jinux_frame::vm::VmIo;
@ -145,8 +148,13 @@ impl Vnode {
inner.inode.read_at(0, &mut buf[..file_len])
}
pub fn mknod(&self, name: &str, type_: InodeType, mode: InodeMode) -> Result<Self> {
let inode = self.inner.read().inode.mknod(name, type_, mode)?;
pub fn create(&self, name: &str, type_: InodeType, mode: InodeMode) -> Result<Self> {
let inode = self.inner.read().inode.create(name, type_, mode)?;
Self::new(inode)
}
pub fn mknod(&self, name: &str, mode: InodeMode, device: Arc<dyn Device>) -> Result<Self> {
let inode = self.inner.read().inode.mknod(name, mode, device)?;
Self::new(inode)
}
@ -190,6 +198,10 @@ impl Vnode {
self.inner.read().inode.poll(mask, poller)
}
pub fn ioctl(&self, cmd: IoctlCmd, arg: usize) -> Result<i32> {
self.inner.read().inode.ioctl(cmd, arg)
}
pub fn metadata(&self) -> Metadata {
self.inner.read().inode.metadata()
}