提交 87743bac 编写于 作者: Y Yifan Wu

Merge branch 'ch7' into dev

......@@ -10,7 +10,6 @@ use alloc::vec::Vec;
use spin::Mutex;
use super::File;
use crate::mm::UserBuffer;
use core::any::Any;
pub struct OSInode {
readable: bool,
......@@ -157,5 +156,4 @@ impl File for OSInode {
}
total_write_size
}
fn as_any_ref(&self) -> &dyn Any { self }
}
\ No newline at end of file
......@@ -3,21 +3,12 @@ mod stdio;
mod inode;
use crate::mm::UserBuffer;
use core::any::Any;
pub trait File : Any + Send + Sync {
pub trait File : Send + Sync {
fn readable(&self) -> bool;
fn writable(&self) -> bool;
fn read(&self, buf: UserBuffer) -> usize;
fn write(&self, buf: UserBuffer) -> usize;
fn as_any_ref(&self) -> &dyn Any;
}
impl dyn File {
#[allow(unused)]
pub fn downcast_ref<T: File>(&self) -> Option<&T> {
self.as_any_ref().downcast_ref::<T>()
}
}
pub use pipe::{Pipe, make_pipe};
......
......@@ -5,7 +5,6 @@ use crate::mm::{
UserBuffer,
};
use crate::task::suspend_current_and_run_next;
use core::any::Any;
pub struct Pipe {
readable: bool,
......@@ -165,5 +164,4 @@ impl File for Pipe {
}
}
}
fn as_any_ref(&self) -> &dyn Any { self }
}
\ No newline at end of file
......@@ -2,7 +2,6 @@ use super::File;
use crate::mm::{UserBuffer};
use crate::sbi::console_getchar;
use crate::task::suspend_current_and_run_next;
use core::any::Any;
pub struct Stdin;
......@@ -31,7 +30,6 @@ impl File for Stdin {
fn write(&self, _user_buf: UserBuffer) -> usize {
panic!("Cannot write to stdin!");
}
fn as_any_ref(&self) -> &dyn Any { self }
}
impl File for Stdout {
......@@ -46,5 +44,4 @@ impl File for Stdout {
}
user_buf.len()
}
fn as_any_ref(&self) -> &dyn Any { self }
}
\ No newline at end of file
Markdown is supported
0% .
You are about to add 0 people to the discussion. Proceed with caution.
先完成此消息的编辑!
想要评论请 注册