aboutsummaryrefslogtreecommitdiff
path: root/kernel
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
parented663488a66383e136534a5c43c66ef5868cb2d3 (diff)
downloadteachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.tar.xz
teachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.zip
kapi: move CPU to kapi
Diffstat (limited to 'kernel')
-rw-r--r--kernel/CMakeLists.txt2
-rw-r--r--kernel/include/kernel/devices/cpu.hpp33
-rw-r--r--kernel/kapi/cpu.cpp19
-rw-r--r--kernel/kapi/devices.cpp7
-rw-r--r--kernel/kapi/devices/cpu.cpp (renamed from kernel/src/devices/cpu.cpp)24
-rw-r--r--kernel/src/test_support/kapi/cpu.cpp3
6 files changed, 9 insertions, 79 deletions
diff --git a/kernel/CMakeLists.txt b/kernel/CMakeLists.txt
index ca8fae7..b9e01eb 100644
--- a/kernel/CMakeLists.txt
+++ b/kernel/CMakeLists.txt
@@ -9,6 +9,7 @@ add_library("kernel_objs" OBJECT
"kapi/cpu.cpp"
"kapi/devices.cpp"
"kapi/devices/bus.cpp"
+ "kapi/devices/cpu.cpp"
"kapi/devices/device.cpp"
"kapi/interrupts.cpp"
"kapi/memory.cpp"
@@ -26,7 +27,6 @@ add_library("kernel_objs" OBJECT
"src/memory.cpp"
"src/devices/block_device.cpp"
"src/devices/block_device_utils.cpp"
- "src/devices/cpu.cpp"
"src/devices/root_bus.cpp"
"src/devices/storage/controller.cpp"
"src/devices/storage/management.cpp"
diff --git a/kernel/include/kernel/devices/cpu.hpp b/kernel/include/kernel/devices/cpu.hpp
deleted file mode 100644
index b056665..0000000
--- a/kernel/include/kernel/devices/cpu.hpp
+++ /dev/null
@@ -1,33 +0,0 @@
-#ifndef TEACHOS_KERNEL_DEVICES_CPU_HPP
-#define TEACHOS_KERNEL_DEVICES_CPU_HPP
-
-#include "kapi/devices.hpp"
-
-#include <cstddef>
-#include <cstdint>
-
-namespace kernel::devices
-{
-
- struct cpu final : kapi::devices::bus
- {
- struct core final : kapi::devices::bus
- {
- explicit core(std::size_t major_number, std::size_t minor_number, std::uint64_t hardware_id, bool is_bsp);
-
- [[nodiscard]] auto hardware_id() const -> std::uint64_t;
- [[nodiscard]] auto is_bsp() const -> bool;
-
- private:
- std::uint64_t m_hardware_id;
- bool m_is_bsp;
- };
-
- explicit cpu(std::size_t major_number);
-
- auto probe() -> bool final;
- };
-
-} // namespace kernel::devices
-
-#endif \ No newline at end of file
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/src/devices/cpu.cpp b/kernel/kapi/devices/cpu.cpp
index 85f4d47..9de5f94 100644
--- a/kernel/src/devices/cpu.cpp
+++ b/kernel/kapi/devices/cpu.cpp
@@ -1,14 +1,11 @@
-#include "kernel/devices/cpu.hpp"
+#include "kapi/devices/cpu.hpp"
-#include "kapi/cpu.hpp"
#include "kapi/devices.hpp"
-#include <kstd/print>
-
#include <cstddef>
#include <cstdint>
-namespace kernel::devices
+namespace kapi::devices
{
cpu::core::core(std::size_t major_number, std::size_t minor_number, std::uint64_t hardware_id, bool is_bsp)
@@ -27,19 +24,8 @@ namespace kernel::devices
return m_is_bsp;
}
- cpu::cpu(std::size_t major_number)
- : kapi::devices::bus{major_number, 0, "cpu"}
+ cpu::cpu(std::size_t major, std::size_t minor)
+ : kapi::devices::bus{major, minor, "cpu"}
{}
- auto cpu::probe() -> bool
- {
- if (!kapi::cpu::discover_topology(*this))
- {
- kstd::println("[OS:DEV] Failed to discover CPU topology");
- return false;
- }
-
- return true;
- }
-
-} // namespace kernel::devices \ No newline at end of file
+} // namespace kapi::devices \ No newline at end of file
diff --git a/kernel/src/test_support/kapi/cpu.cpp b/kernel/src/test_support/kapi/cpu.cpp
index a89bec8..671097e 100644
--- a/kernel/src/test_support/kapi/cpu.cpp
+++ b/kernel/src/test_support/kapi/cpu.cpp
@@ -1,6 +1,5 @@
#include "kernel/test_support/cpu.hpp"
-#include "kapi/devices.hpp"
#include <kapi/cpu.hpp>
#include <atomic>
@@ -29,7 +28,7 @@ namespace kapi::cpu
throw kernel::tests::cpu::halt{};
}
- auto discover_topology(devices::bus &) -> bool
+ auto discover_topology() -> bool
{
// TODO: implement more meaningful simulated CPU topology discovery
return true;