15 : data_{static_cast<uint8_t*>(
malloc(size))}, size_{size} {
16 if (data_ !=
nullptr) {
28 : data_{
std::exchange(other.data_, nullptr)},
29 size_{
std::exchange(other.size_, 0)} {}
34 data_ = std::exchange(other.data_,
nullptr);
35 size_ = std::exchange(other.size_, 0);
51 .phys = v2p(
reinterpret_cast<uintptr_t
>(data_)),
auto GetBuffer() const -> std::span< const uint8_t >
获取缓冲区数据与大小 (只读)
auto ToDmaRegion(VirtToPhysFunc v2p=IdentityVirtToPhys) const -> DmaRegion
创建此缓冲区的 DmaRegion 视图
auto operator=(const IoBuffer &) -> IoBuffer &=delete
auto IsValid() const -> bool
检查缓冲区是否有效
auto(*)(uintptr_t virt) -> uintptr_t VirtToPhysFunc
虚拟地址到物理地址转换回调类型
void * malloc(size_t size)
void * virt
虚拟(CPU 可访问)基地址