aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/devices.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-06 17:24:36 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-06 18:07:17 +0200
commitf456f1674d48932846eb7b5ec1df630ad67e7e3d (patch)
tree1722176d1aa98d0942fb10cfade035c658bf4d14 /kernel/kapi/devices.cpp
parentc18feddd51d1a1398d1245229c5f889dd40554b3 (diff)
downloadteachos-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.cpp10
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 &