diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-06 17:24:36 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-06 18:07:17 +0200 |
| commit | f456f1674d48932846eb7b5ec1df630ad67e7e3d (patch) | |
| tree | 1722176d1aa98d0942fb10cfade035c658bf4d14 /kernel/kapi/devices.cpp | |
| parent | c18feddd51d1a1398d1245229c5f889dd40554b3 (diff) | |
| download | teachos-f456f1674d48932846eb7b5ec1df630ad67e7e3d.tar.xz teachos-f456f1674d48932846eb7b5ec1df630ad67e7e3d.zip | |
kernel/acpi: discover local interrupt controllers
Diffstat (limited to 'kernel/kapi/devices.cpp')
| -rw-r--r-- | kernel/kapi/devices.cpp | 10 |
1 files changed, 10 insertions, 0 deletions
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp index 031f2c9..b2911b0 100644 --- a/kernel/kapi/devices.cpp +++ b/kernel/kapi/devices.cpp @@ -1,7 +1,9 @@ #include "kapi/devices.hpp" +#include "kapi/acpi.hpp" #include "kapi/system.hpp" +#include "kernel/devices/cpu.hpp" #include "kernel/devices/root_bus.hpp" #include <kstd/flat_map> @@ -35,6 +37,14 @@ namespace kapi::devices auto & bus = root_bus.emplace(); register_device(bus); bus.init(); + + auto madt = kapi::acpi::get_table("APIC"); + if (madt) + { + auto cpu_major = allocate_major_number(); + auto cpu = kstd::make_unique<kernel::devices::cpu>(cpu_major); + bus.add_child(std::move(cpu)); + } } auto get_root_bus() -> bus & |
