diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-04-10 10:30:32 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-04-10 10:33:13 +0200 |
| commit | dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc (patch) | |
| tree | ca3cf623e077837763182b699585b004ab06bd49 /kernel/kapi | |
| parent | ed663488a66383e136534a5c43c66ef5868cb2d3 (diff) | |
| download | teachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.tar.xz teachos-dd8dfa3e674d05927e9ed4b7efcb634a634bfdcc.zip | |
kapi: move CPU to kapi
Diffstat (limited to 'kernel/kapi')
| -rw-r--r-- | kernel/kapi/cpu.cpp | 19 | ||||
| -rw-r--r-- | kernel/kapi/devices.cpp | 7 | ||||
| -rw-r--r-- | kernel/kapi/devices/cpu.cpp | 31 |
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 |
