summaryrefslogtreecommitdiff
path: root/src/block_device/memory_disk.rs
diff options
context:
space:
mode:
authorChuyan Zhang <me@zcy.moe>2023-11-30 02:15:06 -0800
committerChuyan Zhang <me@zcy.moe>2023-11-30 02:15:06 -0800
commit1eac97eea4ec0bcef0be061a2cba93a584355283 (patch)
treed98fb1f6e3811286a0733c9df21e467590635ad2 /src/block_device/memory_disk.rs
parentb3db8a5a710aa0890c80241ffb3fd9792bf1cbe7 (diff)
downloadmyfs-1eac97eea4ec0bcef0be061a2cba93a584355283.tar.gz
myfs-1eac97eea4ec0bcef0be061a2cba93a584355283.zip
Add real disk i/o, add mkfs.aya (not yet implemented)
Diffstat (limited to 'src/block_device/memory_disk.rs')
-rw-r--r--src/block_device/memory_disk.rs33
1 files changed, 0 insertions, 33 deletions
diff --git a/src/block_device/memory_disk.rs b/src/block_device/memory_disk.rs
deleted file mode 100644
index 0639d3e..0000000
--- a/src/block_device/memory_disk.rs
+++ /dev/null
@@ -1,33 +0,0 @@
-use crate::block_device::{BlockDevice, BLOCK_SIZE};
-use std::cell::RefCell;
-
-#[repr(C)]
-pub struct MemoryDisk {
- /// Emulating a block device with a segment of RAM,
- /// which is 64MiB == 4KiB per block * 16384 blocks
- pub arena: RefCell<Vec<u8>>,
-}
-
-impl MemoryDisk {
- pub fn new(block_number: usize) -> Self {
- Self {
- arena: RefCell::new(vec![0u8; BLOCK_SIZE * block_number]),
- }
- }
-}
-
-impl BlockDevice for MemoryDisk {
- fn read(&self, block_id: usize, buffer: &mut [u8]) {
- let block_front = block_id * BLOCK_SIZE;
- let block_back = block_front + BLOCK_SIZE;
- let arena = self.arena.borrow();
- buffer.copy_from_slice(&arena[block_front..block_back]);
- }
-
- fn write(&self, block_id: usize, buffer: &[u8]) {
- let block_front = block_id * BLOCK_SIZE;
- let block_back = block_front + BLOCK_SIZE;
- let mut arena = self.arena.borrow_mut();
- arena[block_front..block_back].copy_from_slice(buffer);
- }
-}