From cd0163da154367f5437ae1423bc97c450d74adf7 Mon Sep 17 00:00:00 2001 From: Chuyan Zhang Date: Sat, 18 Nov 2023 02:15:11 -0800 Subject: I hate cache! --- src/cached_inode.rs | 26 ++++++++++++++++++++++++++ 1 file changed, 26 insertions(+) (limited to 'src/cached_inode.rs') diff --git a/src/cached_inode.rs b/src/cached_inode.rs index 814c1aa..a4e8202 100644 --- a/src/cached_inode.rs +++ b/src/cached_inode.rs @@ -1,3 +1,4 @@ +use crate::disk::data_block::{Block, DataBlock}; use crate::disk::inode::Inode; pub struct CachedInode { @@ -5,3 +6,28 @@ pub struct CachedInode { pub index: usize, pub dirty: bool, } + +#[derive(Clone)] +pub struct CachedBlock { + pub block: T, + pub index: usize, + pub dirty: bool, +} + +impl CachedBlock { + fn cast(&self) -> CachedBlock { + unsafe { std::mem::transmute_copy(&self) } + } +} + +pub fn convert_mut(input_block: &mut CachedBlock) -> &mut CachedBlock { + let ptr = input_block as *const CachedBlock as *mut u8; + let block = ptr.cast::>(); + unsafe { &mut *block } +} + +pub fn convert(input_block: &CachedBlock) -> &CachedBlock { + let ptr = input_block as *const CachedBlock as *mut u8; + let block = ptr.cast::>(); + unsafe { &*block } +} -- cgit v1.2.3-70-g09d2