aboutsummaryrefslogtreecommitdiff
path: root/arch/x86_64/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-16 10:17:19 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-16 10:17:19 +0200
commit3c210c07c60fbe9378cfb720847e8c1d3c763ead (patch)
treec83b1aa99dd7435a9fd033772e973ade637b464d /arch/x86_64/kapi
parent888471f23e7f07749b4bc9a2fa70992062b6e4d0 (diff)
parentf9dde928add359a1dff0db402dc1454e72aea633 (diff)
downloadteachos-3c210c07c60fbe9378cfb720847e8c1d3c763ead.tar.xz
teachos-3c210c07c60fbe9378cfb720847e8c1d3c763ead.zip
Merge branch 'fmorgner/develop-BA-FS26/acpi-refactor' into develop-BA-FS26
Diffstat (limited to 'arch/x86_64/kapi')
-rw-r--r--arch/x86_64/kapi/cpu.cpp16
1 files changed, 7 insertions, 9 deletions
diff --git a/arch/x86_64/kapi/cpu.cpp b/arch/x86_64/kapi/cpu.cpp
index 22936c2..965998c 100644
--- a/arch/x86_64/kapi/cpu.cpp
+++ b/arch/x86_64/kapi/cpu.cpp
@@ -23,8 +23,8 @@ namespace kapi::cpu
namespace
{
- constexpr auto candidate_flags = ::acpi::processor_local_apic::flags::processor_enabled //
- | ::acpi::processor_local_apic::flags::online_capable;
+ constexpr auto candidate_flags = ::acpi::processor_local_apic_entry::flags::processor_enabled //
+ | ::acpi::processor_local_apic_entry::flags::online_capable;
}
auto init() -> void
@@ -52,7 +52,7 @@ namespace kapi::cpu
auto static const core_major = kapi::devices::allocate_major_number();
auto static const interrupt_controller_major = kapi::devices::allocate_major_number();
- auto madt = kapi::acpi::get_table<::acpi::madt_table_signature>();
+ auto madt = kapi::acpi::get_table<::acpi::table_signature_v<::acpi::madt>>();
if (!madt)
{
kstd::println("[x86_64:PLT] Failed to find ACPI APIC table");
@@ -62,10 +62,8 @@ namespace kapi::cpu
auto lapic_entries = *madt | std::views::filter([](auto const & entry) {
return entry.type() == ::acpi::madt_entry::type::processor_local_apic;
}) | std::views::transform([](auto const & entry) {
- return static_cast<::acpi::processor_local_apic const &>(entry);
- }) | std::views::filter([](auto const & entry) {
- return static_cast<bool>(entry.active_flags() & candidate_flags);
- });
+ return static_cast<::acpi::processor_local_apic_entry const &>(entry);
+ }) | std::views::filter([](auto const & entry) { return static_cast<bool>(entry.flags() & candidate_flags); });
auto bsp_found = false;
auto core_count = 0uz;
@@ -77,8 +75,8 @@ namespace kapi::cpu
auto is_bsp = !bsp_found;
bsp_found = true;
auto core = kstd::make_unique<devices::cpu::core>(core_major, core_count, apic.processor_id(), is_bsp);
- core->add_child(kstd::make_unique<arch::devices::local_apic>(interrupt_controller_major, core_count,
- apic.apic_id(), local_apic_address, is_bsp));
+ core->add_child(kstd::make_unique<arch::devices::local_apic>(interrupt_controller_major, core_count, apic.id(),
+ local_apic_address, is_bsp));
cpu_bus->add_child(std::move(core));
++core_count;
}