40 uint32_t destination_apic_id,
63 [[nodiscard]]
auto SendIpi(uint32_t target_apic_id, uint8_t vector)
const
82 [[nodiscard]]
auto StartupAp(uint32_t apic_id, uint64_t ap_code_addr,
83 size_t ap_code_size, uint64_t target_addr)
const
94 auto StartupAllAps(uint64_t ap_code_addr,
size_t ap_code_size,
95 uint64_t target_addr)
const -> void;
111 explicit Apic(
const size_t cpu_count);
APIC 管理类,管理整个系统的 Local APIC 和 IO APIC.
auto InitCurrentCpuLocalApic() -> Expected< void >
初始化当前 CPU 的 Local APIC
auto BroadcastIpi(uint8_t vector) const -> Expected< void >
广播 IPI 到所有其他 CPU
auto PrintInfo() const -> void
打印所有 APIC 信息(调试用)
Apic(const Apic &)=delete
auto SendIpi(uint32_t target_apic_id, uint8_t vector) const -> Expected< void >
发送 IPI 到指定 CPU
auto SetupPeriodicTimer(uint32_t frequency_hz, uint8_t vector) const -> void
设置 Local APIC 定时器
auto operator=(Apic &&) -> Apic &=default
auto SendEoi() const -> void
发送 EOI 信号给当前 CPU 的 Local APIC
IoApic io_apic_
只支持一个 IO APIC
auto SetIrqRedirection(uint8_t irq, uint8_t vector, uint32_t destination_apic_id, bool mask=false) -> Expected< void >
设置 IRQ 重定向
auto StartupAllAps(uint64_t ap_code_addr, size_t ap_code_size, uint64_t target_addr) const -> void
唤醒所有应用处理器 (AP)
auto StartupAp(uint32_t apic_id, uint64_t ap_code_addr, size_t ap_code_size, uint64_t target_addr) const -> Expected< void >
启动 AP (Application Processor)
auto UnmaskIrq(uint8_t irq) -> Expected< void >
取消屏蔽 IRQ
size_t cpu_count_
系统 CPU 数量
auto MaskIrq(uint8_t irq) -> Expected< void >
屏蔽 IRQ
LocalApic local_apic_
Local APIC 操作接口(静态实例,用于当前 CPU)
auto operator=(const Apic &) -> Apic &=delete
std::expected< T, Error > Expected
std::expected 别名模板