SimpleKernel 1.17.0
Loading...
Searching...
No Matches
virtio::SplitVirtqueue::Used Struct Reference

Virtqueue Used Ring. More...

#include <split.hpp>

Collaboration diagram for virtio::SplitVirtqueue::Used:
Collaboration graph

Public Member Functions

auto avail_event (uint16_t queue_size) volatile -> volatile uint16_t *
 获取 avail_event 字段的指针
 
auto avail_event (uint16_t queue_size) const volatile -> const volatile uint16_t *
 

Public Attributes

uint16_t flags
 标志位: UsedFlags (little-endian)
 
uint16_t idx
 设备将下一个描述符条目放入环中的位置(模 queue_size) (little-endian)
 
UsedElem ring []
 已用描述符元素数组 ring[queue_size]
 

Static Public Attributes

static constexpr size_t kAlign = 4
 Used Ring 对齐要求(字节)
 

Detailed Description

Virtqueue Used Ring.

Used Ring 是设备完成缓冲区处理后返回它们的地方。 它只由设备写入,由驱动程序读取。

Note
实际 ring[] 大小由 queue_size 决定
4 字节对齐
See also
virtio-v1.2#2.7.8 The Virtqueue Used Ring

Definition at line 158 of file split.hpp.

Member Function Documentation

◆ avail_event() [1/2]

auto virtio::SplitVirtqueue::Used::avail_event ( uint16_t  queue_size) const volatile -> const volatile uint16_t*
inline

Definition at line 186 of file split.hpp.

187 {
188 const auto* byte_ptr = reinterpret_cast<const volatile uint8_t*>(ring);
189 return reinterpret_cast<const volatile uint16_t*>(
190 byte_ptr + sizeof(UsedElem) * queue_size);
191 }
UsedElem ring[]
已用描述符元素数组 ring[queue_size]
Definition split.hpp:168

◆ avail_event() [2/2]

auto virtio::SplitVirtqueue::Used::avail_event ( uint16_t  queue_size) volatile -> volatile uint16_t*
inline

获取 avail_event 字段的指针

Parameters
queue_size队列大小
Returns
avail_event 字段指针
Note
仅当协商 VIRTIO_F_EVENT_IDX 特性时使用
See also
virtio-v1.2#2.7.10 Available Buffer Notification Suppression

Definition at line 178 of file split.hpp.

179 {
180 // avail_event 位于 ring[queue_size] 之后,需要先转换为字节指针计算偏移
181 auto* byte_ptr = reinterpret_cast<volatile uint8_t*>(ring);
182 return reinterpret_cast<volatile uint16_t*>(byte_ptr + sizeof(UsedElem) *
183 queue_size);
184 }
Here is the caller graph for this function:

Member Data Documentation

◆ flags

uint16_t virtio::SplitVirtqueue::Used::flags

标志位: UsedFlags (little-endian)

Definition at line 162 of file split.hpp.

◆ idx

uint16_t virtio::SplitVirtqueue::Used::idx

设备将下一个描述符条目放入环中的位置(模 queue_size) (little-endian)

Definition at line 164 of file split.hpp.

◆ kAlign

constexpr size_t virtio::SplitVirtqueue::Used::kAlign = 4
staticconstexpr

Used Ring 对齐要求(字节)

Definition at line 160 of file split.hpp.

◆ ring

UsedElem virtio::SplitVirtqueue::Used::ring[]

已用描述符元素数组 ring[queue_size]

Definition at line 168 of file split.hpp.


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