|
SimpleKernel 1.17.0
|
IO APIC 驱动类 More...
#include <io_apic.h>

Public Member Functions | |
| auto | SetIrqRedirection (uint8_t irq, uint8_t vector, uint32_t destination_apic_id, bool mask=false) const -> void |
| 设置 IO APIC 重定向表项 | |
| auto | MaskIrq (uint8_t irq) const -> void |
| 屏蔽 IRQ | |
| auto | UnmaskIrq (uint8_t irq) const -> void |
| 取消屏蔽 IRQ | |
| auto | GetId () const -> uint32_t |
| 获取 IO APIC ID | |
| auto | GetVersion () const -> uint32_t |
| 获取 IO APIC 版本 | |
| auto | GetMaxRedirectionEntries () const -> uint32_t |
| 获取 IO APIC 最大重定向条目数 | |
| auto | PrintInfo () const -> void |
| 打印 IO APIC 信息(调试用) | |
构造/析构函数 | |
| IoApic () | |
| IoApic (const IoApic &)=delete | |
| IoApic (IoApic &&)=default | |
| auto | operator= (const IoApic &) -> IoApic &=delete |
| auto | operator= (IoApic &&) -> IoApic &=default |
| ~IoApic ()=default | |
Private Member Functions | |
| auto | Read (uint32_t reg) const -> uint32_t |
| 读取 IO APIC 寄存器 | |
| auto | Write (uint32_t reg, uint32_t value) const -> void |
| 写入 IO APIC 寄存器 | |
| auto | ReadRedirectionEntry (uint8_t irq) const -> uint64_t |
| 读取 IO APIC 重定向表项 | |
| auto | WriteRedirectionEntry (uint8_t irq, uint64_t value) const -> void |
| 写入 IO APIC 重定向表项 | |
Private Attributes | |
| uint64_t | base_address_ {kDefaultIoApicBase} |
| IO APIC 基地址 | |
Static Private Attributes | |
IO APIC 寄存器偏移常数 | |
寄存器选择偏移 | |
| static constexpr uint32_t | kRegSel = 0x00 |
| static constexpr uint32_t | kRegWin = 0x10 |
| 寄存器窗口偏移 | |
IO APIC 寄存器索引常数 | |
IO APIC ID 寄存器索引 | |
| static constexpr uint32_t | kRegId = 0x00 |
| static constexpr uint32_t | kRegVer = 0x01 |
| IO APIC 版本寄存器索引 | |
| static constexpr uint32_t | kRegArb = 0x02 |
| IO APIC 仲裁寄存器索引 | |
| static constexpr uint32_t | kRedTblBase = 0x10 |
| 重定向表基址索引 | |
重定向表项位字段常数 | |
中断向量位掩码 (位 0-7) | |
| static constexpr uint64_t | kVectorMask = 0xFF |
| static constexpr uint32_t | kDeliveryModeShift = 8 |
| 传递模式位移 (位 8-10) | |
| static constexpr uint64_t | kDestModeBit = 1ULL << 11 |
| 目标模式位 (位 11) | |
| static constexpr uint64_t | kDeliveryStatusBit = 1ULL << 12 |
| 传递状态位 (位 12) | |
| static constexpr uint64_t | kPolarityBit = 1ULL << 13 |
| 极性位 (位 13) | |
| static constexpr uint64_t | kRemoteIrrBit = 1ULL << 14 |
| 远程 IRR 位 (位 14) | |
| static constexpr uint64_t | kTriggerModeBit = 1ULL << 15 |
| 触发模式位 (位 15) | |
| static constexpr uint64_t | kMaskBit = 1ULL << 16 |
| 屏蔽位 (位 16) | |
| static constexpr uint32_t | kDestApicIdShift = 56 |
| 目标 APIC ID 位移 (位 56-63) | |
| static constexpr uint64_t | kDestApicIdMask = 0xFF |
| 目标 APIC ID 掩码 | |
传递模式常数 | |
固定传递模式 | |
| static constexpr uint32_t | kDeliveryModeFixed = 0x0 |
| static constexpr uint32_t | kDeliveryModeLowestPriority = 0x1 |
| 最低优先级传递模式 | |
| static constexpr uint32_t | kDeliveryModeSmi = 0x2 |
| SMI 传递模式 | |
| static constexpr uint32_t | kDeliveryModeNmi = 0x4 |
| NMI 传递模式 | |
| static constexpr uint32_t | kDeliveryModeInit = 0x5 |
| INIT 传递模式 | |
| static constexpr uint32_t | kDeliveryModeExtInt = 0x7 |
| ExtINT 传递模式 | |
IO APIC 基地址相关常数 | |
默认 IO APIC 基地址 | |
| static constexpr uint64_t | kDefaultIoApicBase = 0xFEC00000 |
IO APIC 驱动类
| IoApic::IoApic | ( | ) |
Definition at line 11 of file io_apic.cpp.

|
delete |
|
default |
|
default |
| auto IoApic::GetId | ( | ) | const -> uint32_t |
获取 IO APIC ID
Definition at line 73 of file io_apic.cpp.


| auto IoApic::GetMaxRedirectionEntries | ( | ) | const -> uint32_t |
获取 IO APIC 最大重定向条目数
Definition at line 83 of file io_apic.cpp.


| auto IoApic::GetVersion | ( | ) | const -> uint32_t |
获取 IO APIC 版本
Definition at line 78 of file io_apic.cpp.


| auto IoApic::MaskIrq | ( | uint8_t | irq | ) | const -> void |
屏蔽 IRQ
| irq | IRQ 号 |
Definition at line 49 of file io_apic.cpp.

| auto IoApic::PrintInfo | ( | ) | const -> void |
打印 IO APIC 信息(调试用)
Definition at line 88 of file io_apic.cpp.


|
private |
读取 IO APIC 寄存器
| reg | 寄存器索引 |
Definition at line 96 of file io_apic.cpp.

|
private |
读取 IO APIC 重定向表项
| irq | IRQ 号 |
Definition at line 114 of file io_apic.cpp.

| auto IoApic::SetIrqRedirection | ( | uint8_t | irq, |
| uint8_t | vector, | ||
| uint32_t | destination_apic_id, | ||
| bool | mask = false |
||
| ) | const -> void |
设置 IO APIC 重定向表项
| irq | IRQ 号 |
| vector | 中断向量 |
| destination_apic_id | 目标 APIC ID |
| mask | 是否屏蔽中断 |
Definition at line 22 of file io_apic.cpp.

| auto IoApic::UnmaskIrq | ( | uint8_t | irq | ) | const -> void |
取消屏蔽 IRQ
| irq | IRQ 号 |
Definition at line 61 of file io_apic.cpp.

|
private |
写入 IO APIC 寄存器
| reg | 寄存器索引 |
| value | 要写入的值 |
Definition at line 105 of file io_apic.cpp.
|
private |
写入 IO APIC 重定向表项
| irq | IRQ 号 |
| value | 重定向表项值 |
Definition at line 124 of file io_apic.cpp.

|
private |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |
|
staticconstexprprivate |