|
SimpleKernel 1.17.0
|
Virtio 设备初始化器 More...
#include <device_initializer.hpp>

Public Member Functions | |
| auto | Init (uint64_t driver_features) -> Expected< uint64_t > |
| 执行 virtio 设备初始化序列 | |
| auto | SetupQueue (uint32_t queue_idx, uint64_t desc_phys, uint64_t avail_phys, uint64_t used_phys, uint32_t queue_size) -> Expected< void > |
| 配置并激活指定的 virtqueue | |
| auto | Activate () -> Expected< void > |
| 激活设备,开始正常运行 | |
| auto | transport () -> TransportImpl & |
| 获取底层传输层引用 | |
| auto | transport () const -> const TransportImpl & |
构造/析构函数 | |
| DeviceInitializer (TransportImpl &transport) | |
| 构造函数 | |
| DeviceInitializer ()=delete | |
| DeviceInitializer (const DeviceInitializer &)=delete | |
| DeviceInitializer (DeviceInitializer &&)=delete | |
| auto | operator= (const DeviceInitializer &) -> DeviceInitializer &=delete |
| auto | operator= (DeviceInitializer &&) -> DeviceInitializer &=delete |
| ~DeviceInitializer ()=default | |
Private Attributes | |
| TransportImpl & | transport_ |
| 底层传输层引用 | |
Virtio 设备初始化器
负责编排 virtio 设备的初始化流程,独立于底层传输机制(MMIO、PCI 等)。 实现 virtio 规范定义的标准初始化序列。
主要职责:
使用示例:
| TransportImpl | 具体传输层类型(如 MmioTransport) |
Definition at line 46 of file device_initializer.hpp.
|
inlineexplicit |
构造函数
| transport | 传输层引用(必须在 DeviceInitializer 生命周期内保持有效) |
Definition at line 193 of file device_initializer.hpp.
|
delete |
|
delete |
|
delete |
|
default |
|
inline |
激活设备,开始正常运行
设置 DRIVER_OK 状态位,完成设备初始化流程(步骤 8)。 必须在所有队列配置完成后调用。 调用后设备开始正常运行,可以处理队列中的请求。
Definition at line 153 of file device_initializer.hpp.

|
inline |
执行 virtio 设备初始化序列
完整执行设备初始化流程(步骤 1-6):
| driver_features | 驱动程序希望启用的特性位(将与设备特性取交集) |
Definition at line 65 of file device_initializer.hpp.

|
delete |
|
delete |
|
inline |
配置并激活指定的 virtqueue
设置 virtqueue 的物理地址和大小,然后标记为就绪(步骤 7 的一部分)。 必须在调用 Init() 之后、Activate() 之前完成。
| queue_idx | 队列索引(从 0 开始) |
| desc_phys | 描述符表的客户机物理地址(必须 16 字节对齐) |
| avail_phys | Available Ring 的客户机物理地址(必须 2 字节对齐) |
| used_phys | Used Ring 的客户机物理地址(必须 4 字节对齐) |
| queue_size | 队列大小(必须 <= transport_.GetQueueNumMax()) |
Definition at line 116 of file device_initializer.hpp.

|
inline |
获取底层传输层引用
允许访问底层传输层的其他功能(如读取配置空间、处理中断等)。
Definition at line 179 of file device_initializer.hpp.
|
inline |
Definition at line 181 of file device_initializer.hpp.
|
private |
底层传输层引用
Definition at line 205 of file device_initializer.hpp.