SimpleKernel 1.17.0
Loading...
Searching...
No Matches
virtio::blk::BlkConfig Struct Reference

块设备配置空间布局 More...

#include <virtio_blk_defs.h>

Collaboration diagram for virtio::blk::BlkConfig:
Collaboration graph

Public Attributes

uint64_t capacity
 设备容量(以 512 字节扇区为单位)
 
uint32_t size_max
 任意单个段的最大字节数(如果 VIRTIO_BLK_F_SIZE_MAX 被协商)
 
uint32_t seg_max
 单个请求中的最大段数(如果 VIRTIO_BLK_F_SEG_MAX 被协商)
 
struct { 
 
   uint16_t   cylinders 
 柱面数 More...
 
   uint8_t   heads 
 磁头数 More...
 
   uint8_t   sectors 
 每磁道扇区数 More...
 
geometry 
 磁盘几何信息(如果 VIRTIO_BLK_F_GEOMETRY 被协商)
 
uint32_t blk_size
 块大小(字节),用于性能优化(如果 VIRTIO_BLK_F_BLK_SIZE 被协商)
 
struct { 
 
   uint8_t   physical_block_exp 
 每个物理块包含的逻辑块数 (log2) More...
 
   uint8_t   alignment_offset 
 第一个对齐逻辑块的偏移 More...
 
   uint16_t   min_io_size 
 建议的最小 I/O 大小(块数) More...
 
   uint32_t   opt_io_size 
 建议的最优 I/O 大小(块数) More...
 
topology 
 I/O 拓扑信息(如果 VIRTIO_BLK_F_TOPOLOGY 被协商)
 
uint8_t writeback
 
uint8_t unused0 [3]
 保留字段,用于填充对齐
 
uint32_t max_discard_sectors
 discard 命令的最大扇区数(如果 VIRTIO_BLK_F_DISCARD 被协商)
 
uint32_t max_discard_seg
 discard 命令的最大段数(如果 VIRTIO_BLK_F_DISCARD 被协商)
 
uint32_t discard_sector_alignment
 discard 扇区对齐要求(如果 VIRTIO_BLK_F_DISCARD 被协商)
 
uint32_t max_write_zeroes_sectors
 write zeroes 命令的最大扇区数(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)
 
uint32_t max_write_zeroes_seg
 write zeroes 命令的最大段数(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)
 
uint8_t write_zeroes_may_unmap
 write zeroes 是否可能导致 unmap(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)
 
uint8_t unused1 [3]
 保留字段,用于填充对齐
 
uint32_t max_secure_erase_sectors
 secure erase 命令的最大扇区数(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)
 
uint32_t max_secure_erase_seg
 secure erase 命令的最大段数(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)
 
uint32_t secure_erase_sector_alignment
 secure erase 扇区对齐要求(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)
 
uint16_t num_queues
 请求队列数(如果 VIRTIO_BLK_F_MQ 被协商)
 
uint8_t unused2 [6]
 保留字段,用于未来扩展
 

Detailed Description

块设备配置空间布局

See also
virtio-v1.2#5.2.4 Device configuration layout

设备配置空间包含设备的静态配置信息,如容量、最大段大小、 几何信息、拓扑信息等。驱动程序通过传输层读取这些信息。

Note
配置空间使用小端格式
多字节字段需要使用 generation counter 机制确保读取一致性

Definition at line 59 of file virtio_blk_defs.h.

Member Data Documentation

◆ alignment_offset

uint8_t virtio::blk::BlkConfig::alignment_offset

第一个对齐逻辑块的偏移

Definition at line 85 of file virtio_blk_defs.h.

◆ blk_size

uint32_t virtio::blk::BlkConfig::blk_size

块大小(字节),用于性能优化(如果 VIRTIO_BLK_F_BLK_SIZE 被协商)

Definition at line 78 of file virtio_blk_defs.h.

◆ capacity

uint64_t virtio::blk::BlkConfig::capacity

设备容量(以 512 字节扇区为单位)

Definition at line 61 of file virtio_blk_defs.h.

◆ cylinders

uint16_t virtio::blk::BlkConfig::cylinders

柱面数

Definition at line 70 of file virtio_blk_defs.h.

◆ discard_sector_alignment

uint32_t virtio::blk::BlkConfig::discard_sector_alignment

discard 扇区对齐要求(如果 VIRTIO_BLK_F_DISCARD 被协商)

Definition at line 103 of file virtio_blk_defs.h.

◆ [struct]

struct { ... } virtio::blk::BlkConfig::geometry

磁盘几何信息(如果 VIRTIO_BLK_F_GEOMETRY 被协商)

◆ heads

uint8_t virtio::blk::BlkConfig::heads

磁头数

Definition at line 72 of file virtio_blk_defs.h.

◆ max_discard_sectors

uint32_t virtio::blk::BlkConfig::max_discard_sectors

discard 命令的最大扇区数(如果 VIRTIO_BLK_F_DISCARD 被协商)

Definition at line 99 of file virtio_blk_defs.h.

◆ max_discard_seg

uint32_t virtio::blk::BlkConfig::max_discard_seg

discard 命令的最大段数(如果 VIRTIO_BLK_F_DISCARD 被协商)

Definition at line 101 of file virtio_blk_defs.h.

◆ max_secure_erase_sectors

uint32_t virtio::blk::BlkConfig::max_secure_erase_sectors

secure erase 命令的最大扇区数(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)

Definition at line 115 of file virtio_blk_defs.h.

◆ max_secure_erase_seg

uint32_t virtio::blk::BlkConfig::max_secure_erase_seg

secure erase 命令的最大段数(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)

Definition at line 117 of file virtio_blk_defs.h.

◆ max_write_zeroes_sectors

uint32_t virtio::blk::BlkConfig::max_write_zeroes_sectors

write zeroes 命令的最大扇区数(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)

Definition at line 106 of file virtio_blk_defs.h.

◆ max_write_zeroes_seg

uint32_t virtio::blk::BlkConfig::max_write_zeroes_seg

write zeroes 命令的最大段数(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)

Definition at line 108 of file virtio_blk_defs.h.

◆ min_io_size

uint16_t virtio::blk::BlkConfig::min_io_size

建议的最小 I/O 大小(块数)

Definition at line 87 of file virtio_blk_defs.h.

◆ num_queues

uint16_t virtio::blk::BlkConfig::num_queues

请求队列数(如果 VIRTIO_BLK_F_MQ 被协商)

Definition at line 122 of file virtio_blk_defs.h.

◆ opt_io_size

uint32_t virtio::blk::BlkConfig::opt_io_size

建议的最优 I/O 大小(块数)

Definition at line 89 of file virtio_blk_defs.h.

◆ physical_block_exp

uint8_t virtio::blk::BlkConfig::physical_block_exp

每个物理块包含的逻辑块数 (log2)

Definition at line 83 of file virtio_blk_defs.h.

◆ sectors

uint8_t virtio::blk::BlkConfig::sectors

每磁道扇区数

Definition at line 74 of file virtio_blk_defs.h.

◆ secure_erase_sector_alignment

uint32_t virtio::blk::BlkConfig::secure_erase_sector_alignment

secure erase 扇区对齐要求(如果 VIRTIO_BLK_F_SECURE_ERASE 被协商)

Definition at line 119 of file virtio_blk_defs.h.

◆ seg_max

uint32_t virtio::blk::BlkConfig::seg_max

单个请求中的最大段数(如果 VIRTIO_BLK_F_SEG_MAX 被协商)

Definition at line 65 of file virtio_blk_defs.h.

◆ size_max

uint32_t virtio::blk::BlkConfig::size_max

任意单个段的最大字节数(如果 VIRTIO_BLK_F_SIZE_MAX 被协商)

Definition at line 63 of file virtio_blk_defs.h.

◆ [struct]

struct { ... } virtio::blk::BlkConfig::topology

I/O 拓扑信息(如果 VIRTIO_BLK_F_TOPOLOGY 被协商)

◆ unused0

uint8_t virtio::blk::BlkConfig::unused0[3]

保留字段,用于填充对齐

Definition at line 96 of file virtio_blk_defs.h.

◆ unused1

uint8_t virtio::blk::BlkConfig::unused1[3]

保留字段,用于填充对齐

Definition at line 112 of file virtio_blk_defs.h.

◆ unused2

uint8_t virtio::blk::BlkConfig::unused2[6]

保留字段,用于未来扩展

Definition at line 124 of file virtio_blk_defs.h.

◆ write_zeroes_may_unmap

uint8_t virtio::blk::BlkConfig::write_zeroes_may_unmap

write zeroes 是否可能导致 unmap(如果 VIRTIO_BLK_F_WRITE_ZEROES 被协商)

Definition at line 110 of file virtio_blk_defs.h.

◆ writeback

uint8_t virtio::blk::BlkConfig::writeback

缓存模式:0=直写(writethrough),1=回写(writeback) (如果 VIRTIO_BLK_F_CONFIG_WCE 被协商)

Definition at line 94 of file virtio_blk_defs.h.


The documentation for this struct was generated from the following file: