aboutsummaryrefslogtreecommitdiff
path: root/kernel/include
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/include
parentc18feddd51d1a1398d1245229c5f889dd40554b3 (diff)
downloadteachos-f456f1674d48932846eb7b5ec1df630ad67e7e3d.tar.xz
teachos-f456f1674d48932846eb7b5ec1df630ad67e7e3d.zip
kernel/acpi: discover local interrupt controllers
Diffstat (limited to 'kernel/include')
-rw-r--r--kernel/include/kernel/acpi/manager.hpp3
-rw-r--r--kernel/include/kernel/devices/cpu.hpp33
2 files changed, 36 insertions, 0 deletions
diff --git a/kernel/include/kernel/acpi/manager.hpp b/kernel/include/kernel/acpi/manager.hpp
index 437d4c8..fae59a6 100644
--- a/kernel/include/kernel/acpi/manager.hpp
+++ b/kernel/include/kernel/acpi/manager.hpp
@@ -4,6 +4,7 @@
#include "kapi/acpi.hpp"
#include <kstd/flat_map>
+#include <kstd/memory>
#include <kstd/vector>
#include <string_view>
@@ -17,6 +18,8 @@ namespace kernel::acpi
auto load_tables() -> bool;
+ auto get_table(std::string_view signature) -> kstd::observer_ptr<kapi::acpi::system_description_table_header const>;
+
private:
kapi::acpi::root_system_description_pointer const * m_sdp{};
kapi::acpi::system_description_table_header const * m_rsdt{};
diff --git a/kernel/include/kernel/devices/cpu.hpp b/kernel/include/kernel/devices/cpu.hpp
new file mode 100644
index 0000000..b056665
--- /dev/null
+++ b/kernel/include/kernel/devices/cpu.hpp
@@ -0,0 +1,33 @@
+#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