Переглянути джерело

修改RamFS目前存在的BUG (#354)

* 修改RamFS目前存在的BUG
GnoCiYeH 1 рік тому
батько
коміт
a3ef8f8ad5
1 змінених файлів з 27 додано та 0 видалено
  1. 27 0
      kernel/src/filesystem/ramfs/mod.rs

+ 27 - 0
kernel/src/filesystem/ramfs/mod.rs

@@ -114,6 +114,33 @@ impl RamFS {
 }
 
 impl IndexNode for LockedRamFSInode {
+    fn truncate(&self, len: usize) -> Result<(), SystemError> {
+        let mut inode = self.0.lock();
+
+        //如果是文件夹,则报错
+        if inode.metadata.file_type == FileType::Dir {
+            return Err(SystemError::EINVAL);
+        }
+
+        //当前文件长度大于_len才进行截断,否则不操作
+        if inode.data.len() > len {
+            inode.data.resize(len, 0);
+        }
+        return Ok(());
+    }
+
+    fn close(&self, _data: &mut FilePrivateData) -> Result<(), SystemError> {
+        return Ok(());
+    }
+
+    fn open(
+        &self,
+        _data: &mut FilePrivateData,
+        _mode: &super::vfs::file::FileMode,
+    ) -> Result<(), SystemError> {
+        return Ok(());
+    }
+
     fn read_at(
         &self,
         offset: usize,