os/device/block/
mod.rs

1//! 块设备模块
2//!
3//! 包含块设备相关的驱动接口和实现
4
5use super::Driver;
6
7pub mod ram_disk;
8pub mod virtio_blk;
9
10/// 块设备驱动程序接口
11pub trait BlockDriver: Driver {
12    /// 读取块设备数据
13    /// # 参数:
14    /// * `block_id` - 块设备的块号
15    /// * `buf` - 用于存储读取数据的缓冲区
16    /// # 返回值:
17    /// 如果读取成功则返回 true,否则返回 false
18    fn read_block(&self, _block_id: usize, _buf: &mut [u8]) -> bool {
19        unimplemented!("not a block driver")
20    }
21
22    /// 写入块设备数据
23    /// # 参数:
24    /// * `block_id` - 块设备的块号
25    /// * `buf` - 包含要写入数据的缓冲区
26    /// # 返回值:
27    /// 如果写入成功则返回 true,否则返回 false
28    fn write_block(&self, _block_id: usize, _buf: &[u8]) -> bool {
29        unimplemented!("not a block driver")
30    }
31
32    /// 刷新到磁盘
33    /// # 返回值:
34    /// 如果刷新成功则返回 true,否则返回 false
35    fn flush(&self) -> bool {
36        unimplemented!("not a block driver")
37    }
38
39    /// 获取块大小(字节)
40    /// # 返回值:
41    /// 块大小
42    fn block_size(&self) -> usize {
43        unimplemented!("not a block driver")
44    }
45
46    /// 获取总块数
47    /// # 返回值:
48    /// 总块数
49    fn total_blocks(&self) -> usize {
50        unimplemented!("not a block driver")
51    }
52}