aboutsummaryrefslogtreecommitdiff
path: root/kernel/src/devices/cpu.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-06 19:04:40 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-06 19:04:40 +0200
commitfe26083101537df306153e7bea7c291a041897f7 (patch)
tree0f26687fb172fc1852e9c4d58c351a76e9ceb50c /kernel/src/devices/cpu.cpp
parent2a3575a267dede6a364386c0bd6edcff92421f0d (diff)
parentd5c2e101d62f6b4b69c45c127e7a729d246da566 (diff)
downloadteachos-fe26083101537df306153e7bea7c291a041897f7.tar.xz
teachos-fe26083101537df306153e7bea7c291a041897f7.zip
Merge branch 'fmorgner/develop-BA-FS26/apci' into develop-BA-FS26
This patchset introduces basic support for ACPI. Currently, the only user of that support is the CPU discovery subsystem. It uses the processed ACPI information to initialize CPU core devices and their associated local APICs.
Diffstat (limited to 'kernel/src/devices/cpu.cpp')
-rw-r--r--kernel/src/devices/cpu.cpp45
1 files changed, 45 insertions, 0 deletions
diff --git a/kernel/src/devices/cpu.cpp b/kernel/src/devices/cpu.cpp
new file mode 100644
index 0000000..eb10d74
--- /dev/null
+++ b/kernel/src/devices/cpu.cpp
@@ -0,0 +1,45 @@
+#include "kernel/devices/cpu.hpp"
+
+#include "kapi/devices.hpp"
+#include "kapi/platform.hpp"
+
+#include <kstd/print>
+
+#include <cstddef>
+#include <cstdint>
+
+namespace kernel::devices
+{
+
+ cpu::core::core(std::size_t major_number, std::size_t minor_number, std::uint64_t hardware_id, bool is_bsp)
+ : kapi::devices::bus{major_number, minor_number, "cpu_core"}
+ , m_hardware_id{hardware_id}
+ , m_is_bsp{is_bsp}
+ {}
+
+ auto cpu::core::hardware_id() const -> std::uint64_t
+ {
+ return m_hardware_id;
+ }
+
+ auto cpu::core::is_bsp() const -> bool
+ {
+ return m_is_bsp;
+ }
+
+ cpu::cpu(std::size_t major_number)
+ : kapi::devices::bus{major_number, 0, "cpu"}
+ {}
+
+ auto cpu::probe() -> bool
+ {
+ if (!kapi::platform::discover_cpu_topology(*this))
+ {
+ kstd::println("[OS:DEV] Failed to discover CPU topology");
+ return false;
+ }
+
+ return true;
+ }
+
+} // namespace kernel::devices \ No newline at end of file