SimpleKernel 1.17.0
Loading...
Searching...
No Matches
virtio::blk Namespace Reference

Classes

struct  BlkConfig
 块设备配置空间布局 More...
 
struct  BlkDiscardWriteZeroes
 Discard/Write Zeroes/Secure Erase 请求段 More...
 
struct  BlkLifetime
 设备生命周期信息 More...
 
struct  BlkReqHeader
 块设备请求头 More...
 
class  VirtioBlk
 Virtio 块设备驱动 More...
 
class  VirtioBlkVfsAdapter
 Adapts VirtioBlk<> to vfs::BlockDevice. More...
 
struct  VirtioStats
 VirtIO 设备性能监控统计数据 More...
 

Enumerations

enum class  BlkFeatureBit : uint64_t {
  kSizeMax = 1ULL << 1 , kSegMax = 1ULL << 2 , kGeometry = 1ULL << 4 , kRo = 1ULL << 5 ,
  kBlkSize = 1ULL << 6 , kFlush = 1ULL << 9 , kTopology = 1ULL << 10 , kConfigWce = 1ULL << 11 ,
  kMq = 1ULL << 12 , kDiscard = 1ULL << 13 , kWriteZeroes = 1ULL << 14 , kLifetime = 1ULL << 15 ,
  kSecureErase = 1ULL << 16
}
 块设备特性位定义 More...
 
enum class  BlkConfigOffset : uint32_t {
  kCapacity = 0 , kSizeMax = 8 , kSegMax = 12 , kGeometryCylinders = 16 ,
  kGeometryHeads = 18 , kGeometrySectors = 19 , kBlkSize = 20 , kTopologyPhysBlockExp = 24 ,
  kTopologyAlignOffset = 25 , kTopologyMinIoSize = 26 , kTopologyOptIoSize = 28 , kWriteback = 32 ,
  kMaxDiscardSectors = 36 , kMaxDiscardSeg = 40 , kDiscardSectorAlignment = 44 , kMaxWriteZeroesSectors = 48 ,
  kMaxWriteZeroesSeg = 52 , kWriteZeroesMayUnmap = 56 , kMaxSecureEraseSectors = 60 , kMaxSecureEraseSeg = 64 ,
  kSecureEraseSectorAlignment = 68 , kNumQueues = 72
}
 块设备配置空间字段偏移量 More...
 
enum class  ReqType : uint32_t {
  kIn = 0 , kOut = 1 , kFlush = 4 , kGetId = 8 ,
  kGetLifetime = 10 , kDiscard = 11 , kWriteZeroes = 13 , kSecureErase = 14
}
 块设备请求类型 More...
 
enum class  BlkStatus : uint8_t { kOk = 0 , kIoErr = 1 , kUnsupp = 2 }
 块设备请求状态 More...
 

Variables

constexpr size_t kSectorSize = 512
 标准扇区大小(字节)
 
constexpr size_t kDeviceIdMaxLen = 20
 

Detailed Description

Enumeration Type Documentation

◆ BlkConfigOffset

enum class virtio::blk::BlkConfigOffset : uint32_t
strong

块设备配置空间字段偏移量

See also
virtio-v1.2#5.2.4

这些常量定义了各个配置字段在配置空间中的字节偏移量, 用于通过传输层 ReadConfigU* 系列函数访问配置空间。

Enumerator
kCapacity 
kSizeMax 
kSegMax 
kGeometryCylinders 
kGeometryHeads 
kGeometrySectors 
kBlkSize 
kTopologyPhysBlockExp 
kTopologyAlignOffset 
kTopologyMinIoSize 
kTopologyOptIoSize 
kWriteback 
kMaxDiscardSectors 
kMaxDiscardSeg 
kDiscardSectorAlignment 
kMaxWriteZeroesSectors 
kMaxWriteZeroesSeg 
kWriteZeroesMayUnmap 
kMaxSecureEraseSectors 
kMaxSecureEraseSeg 
kSecureEraseSectorAlignment 
kNumQueues 

Definition at line 134 of file virtio_blk_defs.h.

134 : uint32_t {
135 kCapacity = 0,
136 kSizeMax = 8,
137 kSegMax = 12,
139 kGeometryHeads = 18,
140 kGeometrySectors = 19,
141 kBlkSize = 20,
146 kWriteback = 32,
148 kMaxDiscardSeg = 40,
156 kNumQueues = 72,
157};
@ kSegMax
设备配置空间中 seg_max 字段有效 (VIRTIO_BLK_F_SEG_MAX)
@ kSizeMax
设备配置空间中 size_max 字段有效 (VIRTIO_BLK_F_SIZE_MAX)
@ kBlkSize
设备配置空间中 blk_size 字段有效 (VIRTIO_BLK_F_BLK_SIZE)

◆ BlkFeatureBit

enum class virtio::blk::BlkFeatureBit : uint64_t
strong

块设备特性位定义

See also
virtio-v1.2#5.2.3 Feature bits

特性位用于在设备初始化期间协商设备功能。 驱动程序通过读取设备特性位来确定设备支持哪些功能, 并通过写入驱动程序特性位来确认要使用的功能。

Enumerator
kSizeMax 

设备配置空间中 size_max 字段有效 (VIRTIO_BLK_F_SIZE_MAX)

kSegMax 

设备配置空间中 seg_max 字段有效 (VIRTIO_BLK_F_SEG_MAX)

kGeometry 

设备配置空间中 geometry 字段有效 (VIRTIO_BLK_F_GEOMETRY)

kRo 

设备为只读设备 (VIRTIO_BLK_F_RO)

kBlkSize 

设备配置空间中 blk_size 字段有效 (VIRTIO_BLK_F_BLK_SIZE)

kFlush 

设备支持缓存刷新命令 (VIRTIO_BLK_F_FLUSH)

kTopology 

设备配置空间中 topology 字段有效 (VIRTIO_BLK_F_TOPOLOGY)

kConfigWce 

设备可在回写和直写缓存模式间切换 (VIRTIO_BLK_F_CONFIG_WCE)

kMq 

设备支持多队列 (VIRTIO_BLK_F_MQ)

kDiscard 

设备支持 discard 命令 (VIRTIO_BLK_F_DISCARD)

kWriteZeroes 

设备支持 write zeroes 命令 (VIRTIO_BLK_F_WRITE_ZEROES)

kLifetime 

设备支持提供存储生命周期信息 (VIRTIO_BLK_F_LIFETIME)

kSecureErase 

设备支持 secure erase 命令 (VIRTIO_BLK_F_SECURE_ERASE)

Definition at line 20 of file virtio_blk_defs.h.

20 : uint64_t {
22 kSizeMax = 1ULL << 1,
24 kSegMax = 1ULL << 2,
26 kGeometry = 1ULL << 4,
28 kRo = 1ULL << 5,
30 kBlkSize = 1ULL << 6,
32 kFlush = 1ULL << 9,
34 kTopology = 1ULL << 10,
36 kConfigWce = 1ULL << 11,
38 kMq = 1ULL << 12,
40 kDiscard = 1ULL << 13,
42 kWriteZeroes = 1ULL << 14,
44 kLifetime = 1ULL << 15,
46 kSecureErase = 1ULL << 16,
47};
@ kWriteZeroes
设备支持 write zeroes 命令 (VIRTIO_BLK_F_WRITE_ZEROES)
@ kDiscard
设备支持 discard 命令 (VIRTIO_BLK_F_DISCARD)
@ kTopology
设备配置空间中 topology 字段有效 (VIRTIO_BLK_F_TOPOLOGY)
@ kMq
设备支持多队列 (VIRTIO_BLK_F_MQ)
@ kRo
设备为只读设备 (VIRTIO_BLK_F_RO)
@ kConfigWce
设备可在回写和直写缓存模式间切换 (VIRTIO_BLK_F_CONFIG_WCE)
@ kFlush
设备支持缓存刷新命令 (VIRTIO_BLK_F_FLUSH)
@ kSecureErase
设备支持 secure erase 命令 (VIRTIO_BLK_F_SECURE_ERASE)
@ kGeometry
设备配置空间中 geometry 字段有效 (VIRTIO_BLK_F_GEOMETRY)
@ kLifetime
设备支持提供存储生命周期信息 (VIRTIO_BLK_F_LIFETIME)

◆ BlkStatus

enum class virtio::blk::BlkStatus : uint8_t
strong

块设备请求状态

See also
virtio-v1.2#5.2.6

设备在请求完成后,在响应中写入状态字节。

Enumerator
kOk 

操作成功 (VIRTIO_BLK_S_OK)

kIoErr 

IO 错误 (VIRTIO_BLK_S_IOERR)

kUnsupp 

不支持的操作 (VIRTIO_BLK_S_UNSUPP)

Definition at line 191 of file virtio_blk_defs.h.

191 : uint8_t {
193 kOk = 0,
195 kIoErr = 1,
197 kUnsupp = 2,
198};
@ kUnsupp
不支持的操作 (VIRTIO_BLK_S_UNSUPP)
@ kIoErr
IO 错误 (VIRTIO_BLK_S_IOERR)
@ kOk
操作成功 (VIRTIO_BLK_S_OK)

◆ ReqType

enum class virtio::blk::ReqType : uint32_t
strong

块设备请求类型

See also
virtio-v1.2#5.2.6 Device Operation

定义了块设备支持的各种请求操作类型。 请求类型存储在请求头的 type 字段中。

Enumerator
kIn 

读取 (VIRTIO_BLK_T_IN)

kOut 

写入 (VIRTIO_BLK_T_OUT)

kFlush 

刷新缓存 (VIRTIO_BLK_T_FLUSH)

kGetId 

获取设备 ID (VIRTIO_BLK_T_GET_ID)

kGetLifetime 

获取设备生命周期信息 (VIRTIO_BLK_T_GET_LIFETIME)

kDiscard 

丢弃扇区 (VIRTIO_BLK_T_DISCARD)

kWriteZeroes 

写零 (VIRTIO_BLK_T_WRITE_ZEROES)

kSecureErase 

安全擦除 (VIRTIO_BLK_T_SECURE_ERASE)

Definition at line 166 of file virtio_blk_defs.h.

166 : uint32_t {
168 kIn = 0,
170 kOut = 1,
172 kFlush = 4,
174 kGetId = 8,
176 kGetLifetime = 10,
178 kDiscard = 11,
180 kWriteZeroes = 13,
182 kSecureErase = 14,
183};
@ kGetLifetime
获取设备生命周期信息 (VIRTIO_BLK_T_GET_LIFETIME)
@ kGetId
获取设备 ID (VIRTIO_BLK_T_GET_ID)
@ kOut
写入 (VIRTIO_BLK_T_OUT)
@ kIn
读取 (VIRTIO_BLK_T_IN)

Variable Documentation

◆ kDeviceIdMaxLen

constexpr size_t virtio::blk::kDeviceIdMaxLen = 20
inlineconstexpr

GET_ID 请求返回的设备 ID 字符串最大长度(字节)

Note
如果字符串长度为 20 字节,则没有 NUL 终止符

Definition at line 278 of file virtio_blk_defs.h.

◆ kSectorSize

constexpr size_t virtio::blk::kSectorSize = 512
inlineconstexpr

标准扇区大小(字节)

Definition at line 274 of file virtio_blk_defs.h.