|
SimpleKernel 1.17.0
|
Virtio 传输层基类(零虚表开销,C++23 Deducing this) More...
#include <transport.hpp>


Public Types | |
| enum class | DeviceStatus : uint32_t { kReset = 0 , kAcknowledge = 1 , kDriver = 2 , kDriverOk = 4 , kFeaturesOk = 8 , kDeviceNeedsReset = 64 , kFailed = 128 } |
| 设备状态位定义 More... | |
Public Member Functions | |
| auto | Reset (this auto &&self) -> void |
| 重置设备 | |
| auto | NeedsReset (this auto const &self) -> bool |
| 检查设备是否需要重置 | |
| auto | IsActive (this auto const &self) -> bool |
| 检查设备是否已激活(DRIVER_OK 已设置) | |
| auto | AcknowledgeInterrupt (this auto &&self) -> void |
| 确认并清除设备中断 | |
Protected Member Functions | |
构造/析构函数(仅允许派生类使用) | |
| Transport ()=default | |
| ~Transport ()=default | |
| Transport (Transport &&) noexcept=default | |
| auto | operator= (Transport &&) noexcept -> Transport &=default |
| Transport (const Transport &)=delete | |
| auto | operator= (const Transport &) -> Transport &=delete |
Virtio 传输层基类(零虚表开销,C++23 Deducing this)
利用 C++23 Deducing this(显式对象参数,P0847)实现编译期多态, 消除虚表指针开销和 CRTP static_cast 样板代码,实现零开销抽象。 子类(MmioTransport、PciTransport)继承此基类并提供具体的寄存器访问实现。
基类仅提供通用逻辑方法(Reset、NeedsReset、IsActive、AcknowledgeInterrupt), 通过 Deducing this 在编译期静态分发到子类的具体实现。
子类应满足 TransportConcept 约束。
Definition at line 83 of file transport.hpp.
|
strong |
设备状态位定义
Definition at line 89 of file transport.hpp.
|
protecteddefault |
|
protecteddefault |
|
protecteddefaultnoexcept |
|
protecteddelete |
|
inline |
确认并清除设备中断
Definition at line 137 of file transport.hpp.
|
inline |
检查设备是否已激活(DRIVER_OK 已设置)
Definition at line 128 of file transport.hpp.
|
inline |
检查设备是否需要重置
Definition at line 120 of file transport.hpp.
|
inline |
重置设备
Definition at line 110 of file transport.hpp.
