44 auto* ptr =
static_cast<uint8_t*
>(buf);
45 for (uint32_t i = 0; i < count; ++i) {
48 return std::unexpected(
Error(result.error().code));
56 const auto* ptr =
static_cast<const uint8_t*
>(buf);
57 for (uint32_t i = 0; i < count; ++i) {
60 return std::unexpected(
Error(result.error().code));
74 [[nodiscard]]
auto GetName() const -> const
char*
override {
75 static constexpr std::array<const char*, 4> kNames = {
76 "virtio-blk0",
"virtio-blk1",
"virtio-blk2",
"virtio-blk3"};
77 return (
index_ < kNames.size()) ? kNames[
index_] :
"virtio-blk?";
Adapts VirtioBlk<> to vfs::BlockDevice.
auto GetSectorCount() const -> uint64_t override
获取设备总扇区数
auto operator=(VirtioBlkVfsAdapter &&) -> VirtioBlkVfsAdapter &=delete
auto ReadSectors(uint64_t lba, uint32_t count, void *buf) -> Expected< size_t > override
读取连续扇区
auto GetSectorSize() const -> uint32_t override
获取扇区大小(通常为 512 字节)
~VirtioBlkVfsAdapter() override=default
auto WriteSectors(uint64_t lba, uint32_t count, const void *buf) -> Expected< size_t > override
写入连续扇区
VirtioBlkVfsAdapter(VirtioBlkVfsAdapter &&)=delete
static constexpr uint32_t kSectorSize
auto GetName() const -> const char *override
获取设备名称(如 "virtio-blk0")
auto operator=(const VirtioBlkVfsAdapter &) -> VirtioBlkVfsAdapter &=delete
VirtioBlkVfsAdapter()=delete
VirtioBlkVfsAdapter(const VirtioBlkVfsAdapter &)=delete
VirtioBlkVfsAdapter(VirtioBlkType *_dev, uint32_t _index=0)
构造函数
auto GetCapacity() const -> uint64_t
获取设备容量
auto Write(uint64_t sector, const uint8_t *data) -> Expected< void >
同步写入一个扇区
auto Read(uint64_t sector, uint8_t *data) -> Expected< void >
同步读取一个扇区
std::expected< T, Error > Expected
std::expected 别名模板