mod sdcard; mod virtio_blk; use alloc::sync::Arc; use easy_fs::BlockDevice; use lazy_static::*; #[cfg(feature = "board_qemu")] type BlockDeviceImpl = virtio_blk::VirtIOBlock; #[cfg(feature = "board_k210")] type BlockDeviceImpl = sdcard::SDCardWrapper; lazy_static! { pub static ref BLOCK_DEVICE: Arc = Arc::new(BlockDeviceImpl::new()); } #[allow(unused)] pub fn block_device_test() { let block_device = BLOCK_DEVICE.clone(); let mut write_buffer = [0u8; 512]; let mut read_buffer = [0u8; 512]; for i in 0..512 { for byte in write_buffer.iter_mut() { *byte = i as u8; } block_device.write_block(i as usize, &write_buffer); block_device.read_block(i as usize, &mut read_buffer); assert_eq!(write_buffer, read_buffer); } println!("block device test passed!"); }