aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-10 10:30:32 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-10 10:33:13 +0200
commitdd8dfa3e674d05927e9ed4b7efcb634a634bfdcc (patch)
treeca3cf623e077837763182b699585b004ab06bd49 /kernel/kapi
parented663488a66383e136534a5c43c66ef5868cb2d3 (diff)
downloadteachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.tar.xz
teachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.zip
kapi: move CPU to kapi
Diffstat (limited to 'kernel/kapi')
-rw-r--r--kernel/kapi/cpu.cpp19
-rw-r--r--kernel/kapi/devices.cpp7
-rw-r--r--kernel/kapi/devices/cpu.cpp31
3 files changed, 33 insertions, 24 deletions
diff --git a/kernel/kapi/cpu.cpp b/kernel/kapi/cpu.cpp
index d632628..13de584 100644
--- a/kernel/kapi/cpu.cpp
+++ b/kernel/kapi/cpu.cpp
@@ -1,17 +1,9 @@
#include "kapi/cpu.hpp"
-#include "kapi/devices.hpp"
#include "kapi/system.hpp"
-#include "kernel/devices/cpu.hpp"
-
-#include <kstd/memory>
#include <kstd/print>
-#include <cstddef>
-#include <cstdint>
-#include <utility>
-
namespace kapi::cpu
{
@@ -40,15 +32,4 @@ namespace kapi::cpu
}
}
- auto core_detected(kapi::devices::bus & bus, std::size_t major, std::size_t minor, std::uint64_t hardware_id,
- bool is_bsp, kstd::unique_ptr<devices::device> core_interrupt_controller) -> bool
- {
- auto core = kstd::make_unique<kernel::devices::cpu::core>(major, minor, hardware_id, is_bsp);
-
- core->add_child(std::move(core_interrupt_controller));
- bus.add_child(std::move(core));
-
- return true;
- }
-
} // namespace kapi::cpu \ No newline at end of file
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp
index dad1fe4..b8aa44b 100644
--- a/kernel/kapi/devices.cpp
+++ b/kernel/kapi/devices.cpp
@@ -1,8 +1,8 @@
#include "kapi/devices.hpp"
+#include "kapi/cpu.hpp"
#include "kapi/system.hpp"
-#include "kernel/devices/cpu.hpp"
#include "kernel/devices/root_bus.hpp"
#include <kstd/flat_map>
@@ -17,7 +17,6 @@
namespace kapi::devices
{
-
namespace
{
auto constinit next_major_number = std::atomic_size_t{1};
@@ -37,9 +36,7 @@ namespace kapi::devices
register_device(bus);
bus.init();
- auto cpu_major = allocate_major_number();
- auto cpu = kstd::make_unique<kernel::devices::cpu>(cpu_major);
- bus.add_child(std::move(cpu));
+ kapi::cpu::discover_topology();
}
auto get_root_bus() -> bus &
diff --git a/kernel/kapi/devices/cpu.cpp b/kernel/kapi/devices/cpu.cpp
new file mode 100644
index 0000000..9de5f94
--- /dev/null
+++ b/kernel/kapi/devices/cpu.cpp
@@ -0,0 +1,31 @@
+#include "kapi/devices/cpu.hpp"
+
+#include "kapi/devices.hpp"
+
+#include <cstddef>
+#include <cstdint>
+
+namespace kapi::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, std::size_t minor)
+ : kapi::devices::bus{major, minor, "cpu"}
+ {}
+
+} // namespace kapi::devices \ No newline at end of file