43 [[nodiscard]]
auto SendIpi(uint32_t destination_apic_id, uint8_t vector)
const
72 auto EnableTimer(uint32_t initial_count, uint32_t divide_value,
73 uint8_t vector,
bool periodic =
true)
const -> void;
104 auto SendInitIpi(uint32_t destination_apic_id)
const -> void;
111 auto SendStartupIpi(uint32_t destination_apic_id, uint8_t start_page)
const
121 auto WakeupAp(uint32_t destination_apic_id, uint8_t start_vector)
const
auto IsXApicEnabled() const -> bool
检查传统 xAPIC 是否启用
static constexpr uint32_t kXApicLvtLint0Offset
LVT LINT0 寄存器偏移
auto SetupOneShotTimer(uint32_t microseconds, uint8_t vector) const -> void
设置单次定时器
static constexpr uint32_t kIcrBroadcastMode
ICR 广播模式位
static constexpr uint32_t kIcrDestShift
ICR 目标位移
auto EnableXApic() const -> bool
启用传统 xAPIC 模式
static constexpr uint32_t kXApicEoiOffset
EOI 寄存器偏移
LocalApic(LocalApic &&)=default
uint64_t apic_base_
APIC 基地址(仅用于 xAPIC 模式)
static constexpr uint64_t kX2ApicEnableBit
x2APIC 启用位
static constexpr uint64_t kDefaultApicBase
static constexpr uint32_t kXApicTimerCurrCountOffset
定时器当前计数寄存器偏移
static constexpr uint32_t kApicSoftwareEnableBit
APIC 软件启用位
static constexpr uint32_t kTimerDivideBy1
定时器分频 1
static constexpr uint32_t kXApicVersionOffset
版本寄存器偏移
static constexpr uint32_t kXApicSivrOffset
虚假中断向量寄存器偏移
static constexpr uint32_t kXApicEsrOffset
错误状态寄存器偏移
auto DisableTimer() const -> void
禁用 Local APIC 定时器
static constexpr uint32_t kCalibrationDelayLoop
校准延时循环次数
static constexpr uint32_t kSipiMode
SIPI 模式
static constexpr uint32_t kXApicIcrLowOffset
ICR 低位寄存器偏移
static constexpr uint32_t kXApicLvtLint1Offset
LVT LINT1 寄存器偏移
auto DisableXApic() const -> bool
禁用传统 xAPIC 模式
auto GetApicVersion() const -> uint32_t
获取 APIC 版本信息
static constexpr uint64_t kApicBaseControlMask
APIC 基地址控制位掩码
static constexpr uint32_t kCalibrationCount
校准用的计数值
static constexpr uint32_t kMicrosecondsPerSecond
每秒微秒数
bool is_x2apic_mode_
当前 APIC 模式(true = x2APIC, false = xAPIC)
auto SendEoi() const -> void
发送中断结束信号 (EOI)
static constexpr uint32_t kExtIntMode
ExtINT 传递模式
auto DisableX2Apic() const -> bool
禁用 x2APIC 模式
static constexpr uint32_t kXApicTprOffset
任务优先级寄存器偏移
auto ReadErrorStatus() const -> uint32_t
读取错误状态
static constexpr uint32_t kApicIdMask
xAPIC ID 掩码
static constexpr uint32_t kSpuriousVector
虚假中断向量
auto SendStartupIpi(uint32_t destination_apic_id, uint8_t start_page) const -> void
发送 SIPI (Startup IPI)
static constexpr uint32_t kNmiMode
NMI 传递模式
auto GetTaskPriority() const -> uint8_t
获取任务优先级
auto SetupPeriodicTimer(uint32_t frequency_hz, uint8_t vector) const -> void
设置周期性定时器
static constexpr uint32_t kXApicTimerDivideOffset
定时器分频寄存器偏移
static constexpr uint32_t kLvtMaskBit
LVT 掩码位
auto EnableTimer(uint32_t initial_count, uint32_t divide_value, uint8_t vector, bool periodic=true) const -> void
启用 Local APIC 定时器
auto BroadcastIpi(uint8_t vector) const -> Expected< void >
广播 IPI 到所有其他 CPU
auto GetTimerCurrentCount() const -> uint32_t
获取定时器当前计数值
static constexpr uint32_t kIcrDeliveryStatusBit
ICR 传递状态位
auto SendIpi(uint32_t destination_apic_id, uint8_t vector) const -> Expected< void >
发送处理器间中断 (IPI)
static constexpr uint32_t kCalibrationMultiplier
校准倍数 (10ms -> 1s)
static constexpr uint32_t kTimerDivideBy16
定时器分频 16
auto ConfigureLvtEntries() const -> void
配置 Local Vector Table 条目
static constexpr uint32_t kXApicTimerInitCountOffset
定时器初始计数寄存器偏移
static constexpr uint32_t kXApicLvtErrorOffset
LVT 错误寄存器偏移
auto IsX2ApicEnabled() const -> bool
检查 x2APIC 是否启用
static constexpr uint64_t kApicGlobalEnableBit
APIC 全局启用位
static constexpr uint64_t kApicBaseMask
APIC 基地址掩码
auto PrintInfo() const -> void
打印 Local APIC 信息(调试用)
auto operator=(const LocalApic &) -> LocalApic &=delete
static constexpr uint32_t kXApicIcrHighOffset
ICR 高位寄存器偏移
auto operator=(LocalApic &&) -> LocalApic &=default
static constexpr uint32_t kInitIpiMode
INIT IPI 模式
auto CheckX2ApicSupport() const -> bool
检查 CPU 是否支持 x2APIC
auto EnableX2Apic() const -> bool
启用 x2APIC 模式
static constexpr uint32_t kDefaultApicClockHz
static constexpr uint8_t kErrorVector
错误中断向量
LocalApic(const LocalApic &)=delete
auto Init() -> Expected< void >
初始化 Local APIC
static constexpr uint32_t kLvtPeriodicMode
LVT 周期模式位
static constexpr uint32_t kXApicLvtTimerOffset
LVT 定时器寄存器偏移
auto SendInitIpi(uint32_t destination_apic_id) const -> void
发送 INIT IPI
static constexpr uint32_t kApicIdShift
auto WakeupAp(uint32_t destination_apic_id, uint8_t start_vector) const -> void
唤醒应用处理器 (AP)
auto SetTaskPriority(uint8_t priority) const -> void
设置任务优先级
static constexpr uint32_t kXApicIdOffset
std::expected< T, Error > Expected
std::expected 别名模板