refactor: ByteOffset newtype for window/register/ring offsets; named virtio-gpu cmd fields

This commit is contained in:
2026-10-27 21:52:33 +01:00
parent 842d14987c
commit 7b8258b231
13 changed files with 145 additions and 93 deletions

View File

@@ -5,7 +5,7 @@ use hw_virtio::block::{self, DmaAddrs};
use hw_virtio::mmio::{MmioAccess, Registers};
use hw_virtio::queue::VirtioQueue;
use port_block_device::{BlockDevice, SectorId};
use types::address::{PhysicalAddress, VirtualAddress};
use types::address::{ByteOffset, PhysicalAddress, VirtualAddress};
use types::bounded::PageCount;
const MMIO_VA: VirtualAddress = VirtualAddress::from_raw(0x20000);
@@ -38,11 +38,11 @@ impl VirtioBlockDevice {
let at = |offset: usize| PhysicalAddress::from_raw(req.physical.raw() + offset);
let dma = DmaAddrs {
header_pa: at(0),
header: req.window.sub(0, 16),
header: req.window.sub(ByteOffset::new(0), 16),
status_pa: at(16),
status: req.window.sub(16, 1),
status: req.window.sub(ByteOffset::new(16), 1),
data_pa: at(32),
data: req.window.sub(32, SECTOR_SIZE),
data: req.window.sub(ByteOffset::new(32), SECTOR_SIZE),
};
let capacity = regs.read(block::CONFIG_CAPACITY) as u64
| (regs.read(block::CONFIG_CAPACITY + 4) as u64) << 32;