aboutsummaryrefslogtreecommitdiff
path: root/kapi/include
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-06 15:10:04 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-06 15:11:47 +0200
commit4d938cd31a35cd4322fe914edd568faa5391c9c2 (patch)
tree749af894d900cbb903ba9e51853a42f0c5427594 /kapi/include
parent3dcd14a0570fef3bcc68d7df42fe3ff4cd496f93 (diff)
downloadteachos-4d938cd31a35cd4322fe914edd568faa5391c9c2.tar.xz
teachos-4d938cd31a35cd4322fe914edd568faa5391c9c2.zip
kernel/acpi: implement basic table discovery
Diffstat (limited to 'kapi/include')
-rw-r--r--kapi/include/kapi/acpi.hpp29
1 files changed, 20 insertions, 9 deletions
diff --git a/kapi/include/kapi/acpi.hpp b/kapi/include/kapi/acpi.hpp
index d5e3c87..11068d1 100644
--- a/kapi/include/kapi/acpi.hpp
+++ b/kapi/include/kapi/acpi.hpp
@@ -19,15 +19,26 @@ namespace kapi::acpi
struct [[gnu::packed]] system_description_table_header
{
- std::array<char, 4> signature;
- std::uint32_t length;
- std::uint8_t revision;
- std::uint8_t checksum;
- std::array<char, 6> oem_id;
- std::array<char, 8> oem_table_id;
- std::uint32_t oem_revision;
- std::uint32_t creator_id;
- std::uint32_t create_revision;
+ [[nodiscard]] auto checksum() const noexcept -> std::uint8_t;
+ [[nodiscard]] auto creator_revision() const noexcept -> std::uint32_t;
+ [[nodiscard]] auto creator_id() const noexcept -> std::uint32_t;
+ [[nodiscard]] auto length() const noexcept -> kstd::units::bytes;
+ [[nodiscard]] auto oem_id() const noexcept -> std::string_view;
+ [[nodiscard]] auto oem_revision() const noexcept -> std::uint32_t;
+ [[nodiscard]] auto oem_table_id() const noexcept -> std::string_view;
+ [[nodiscard]] auto revision() const noexcept -> std::uint8_t;
+ [[nodiscard]] auto signature() const noexcept -> std::string_view;
+
+ private:
+ std::array<char, 4> m_signature;
+ std::uint32_t m_length;
+ std::uint8_t m_revision;
+ std::uint8_t m_checksum;
+ std::array<char, 6> m_oem_id;
+ std::array<char, 8> m_oem_table_id;
+ std::uint32_t m_oem_revision;
+ std::uint32_t m_creator_id;
+ std::uint32_t m_creator_revision;
};
//! @}