26 uint32_t destination_apic_id,
bool mask =
false)
const
33 auto MaskIrq(uint8_t irq)
const -> void;
39 auto UnmaskIrq(uint8_t irq)
const -> void;
45 [[nodiscard]]
auto GetId()
const -> uint32_t;
51 [[nodiscard]]
auto GetVersion()
const -> uint32_t;
86 static constexpr uint32_t
kRegId = 0x00;
149 [[nodiscard]]
auto Read(uint32_t reg)
const -> uint32_t;
156 auto Write(uint32_t reg, uint32_t value)
const -> void;
static constexpr uint64_t kDestApicIdMask
目标 APIC ID 掩码
uint64_t base_address_
IO APIC 基地址
static constexpr uint32_t kRegVer
IO APIC 版本寄存器索引
static constexpr uint64_t kVectorMask
static constexpr uint32_t kRegSel
static constexpr uint64_t kDefaultIoApicBase
static constexpr uint32_t kRegWin
寄存器窗口偏移
static constexpr uint64_t kDestModeBit
目标模式位 (位 11)
auto Read(uint32_t reg) const -> uint32_t
读取 IO APIC 寄存器
static constexpr uint64_t kPolarityBit
极性位 (位 13)
static constexpr uint64_t kTriggerModeBit
触发模式位 (位 15)
IoApic(IoApic &&)=default
IoApic(const IoApic &)=delete
static constexpr uint32_t kDeliveryModeFixed
static constexpr uint32_t kDeliveryModeLowestPriority
最低优先级传递模式
auto UnmaskIrq(uint8_t irq) const -> void
取消屏蔽 IRQ
auto GetId() const -> uint32_t
获取 IO APIC ID
static constexpr uint32_t kDeliveryModeShift
传递模式位移 (位 8-10)
static constexpr uint32_t kDeliveryModeExtInt
ExtINT 传递模式
static constexpr uint32_t kDeliveryModeInit
INIT 传递模式
auto GetMaxRedirectionEntries() const -> uint32_t
获取 IO APIC 最大重定向条目数
auto GetVersion() const -> uint32_t
获取 IO APIC 版本
static constexpr uint32_t kDeliveryModeNmi
NMI 传递模式
static constexpr uint64_t kRemoteIrrBit
远程 IRR 位 (位 14)
auto SetIrqRedirection(uint8_t irq, uint8_t vector, uint32_t destination_apic_id, bool mask=false) const -> void
设置 IO APIC 重定向表项
static constexpr uint32_t kRegArb
IO APIC 仲裁寄存器索引
auto Write(uint32_t reg, uint32_t value) const -> void
写入 IO APIC 寄存器
static constexpr uint32_t kRegId
static constexpr uint64_t kDeliveryStatusBit
传递状态位 (位 12)
auto PrintInfo() const -> void
打印 IO APIC 信息(调试用)
auto WriteRedirectionEntry(uint8_t irq, uint64_t value) const -> void
写入 IO APIC 重定向表项
auto operator=(const IoApic &) -> IoApic &=delete
static constexpr uint64_t kMaskBit
屏蔽位 (位 16)
static constexpr uint32_t kRedTblBase
重定向表基址索引
static constexpr uint32_t kDestApicIdShift
目标 APIC ID 位移 (位 56-63)
auto ReadRedirectionEntry(uint8_t irq) const -> uint64_t
读取 IO APIC 重定向表项
auto operator=(IoApic &&) -> IoApic &=default
static constexpr uint32_t kDeliveryModeSmi
SMI 传递模式
auto MaskIrq(uint8_t irq) const -> void
屏蔽 IRQ