60auto disk_read(BYTE pdrv, BYTE* buff, LBA_t sector, UINT count) -> DRESULT {
65 auto result = dev->ReadSectors(sector,
static_cast<uint32_t
>(count), buff);
67 klog::Err(
"disk_read: pdrv={} sector={} count={} failed",
68 static_cast<unsigned>(pdrv),
static_cast<uint64_t
>(sector),
69 static_cast<unsigned>(count));
84auto disk_write(BYTE pdrv,
const BYTE* buff, LBA_t sector, UINT count)
90 auto result = dev->WriteSectors(sector,
static_cast<uint32_t
>(count), buff);
92 klog::Err(
"disk_write: pdrv={} sector={} count={} failed",
93 static_cast<unsigned>(pdrv),
static_cast<uint64_t
>(sector),
94 static_cast<unsigned>(count));
110 if (dev ==
nullptr) {
115 auto r = dev->Flush();
116 return r ? RES_OK : RES_ERROR;
118 case GET_SECTOR_COUNT:
119 if (buff ==
nullptr) {
122 static_cast<LBA_t*
>(buff)[0] =
static_cast<LBA_t
>(dev->GetSectorCount());
124 case GET_SECTOR_SIZE:
125 if (buff ==
nullptr) {
128 static_cast<WORD*
>(buff)[0] =
static_cast<WORD
>(dev->GetSectorSize());
131 if (buff ==
nullptr) {
134 static_cast<DWORD*
>(buff)[0] = 1;
static auto GetBlockDevice(uint8_t pdrv) -> vfs::BlockDevice *
获取指定驱动器的块设备
auto disk_initialize(BYTE pdrv) -> DSTATUS
初始化磁盘驱动器。
auto disk_ioctl(BYTE pdrv, BYTE cmd, void *buff) -> DRESULT
执行磁盘 I/O 控制操作。
auto get_fattime() -> DWORD
返回 FAT 时间戳。无 RTC 时返回 0(epoch)。
auto disk_write(BYTE pdrv, const BYTE *buff, LBA_t sector, UINT count) -> DRESULT
向磁盘写入扇区。
auto disk_read(BYTE pdrv, BYTE *buff, LBA_t sector, UINT count) -> DRESULT
从磁盘读取扇区。
auto disk_status(BYTE pdrv) -> DSTATUS
查询磁盘驱动器状态。
auto Err(etl::format_string< Args... > fmt, Args &&... args) -> void
以 ERROR 级别记录日志