diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-30 19:12:28 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-30 19:12:28 +0200 |
| commit | eba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc (patch) | |
| tree | 453a878b8e804773eddd39df81292295a5524c3d /kernel | |
| parent | 782b3c8563b2aacfe8f48a49fc6de7cbc26c4861 (diff) | |
| download | kernel-eba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc.tar.xz kernel-eba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc.zip | |
kernel/devices: generalize pseudo signature
Diffstat (limited to 'kernel')
| -rw-r--r-- | kernel/kernel/devices/pseudo.cpp | 33 | ||||
| -rw-r--r-- | kernel/kernel/devices/pseudo.hpp | 20 |
2 files changed, 22 insertions, 31 deletions
diff --git a/kernel/kernel/devices/pseudo.cpp b/kernel/kernel/devices/pseudo.cpp index 066350e8..91fff661 100644 --- a/kernel/kernel/devices/pseudo.cpp +++ b/kernel/kernel/devices/pseudo.cpp @@ -7,7 +7,6 @@ #include <kstd/string.hpp> -#include <string_view> #include <utility> namespace kernel::devices @@ -15,24 +14,7 @@ namespace kernel::devices namespace { - struct simple_pseudo_signature final : kernel::bus::pseudo_signature - { - explicit constexpr simple_pseudo_signature(std::string_view name) - : m_name{name} - {} - - [[nodiscard]] auto name() const noexcept -> std::string_view override - { - return m_name; - } - - private: - std::string_view m_name; - }; - - constinit auto null_signature = simple_pseudo_signature{"null"}; - constinit auto zero_signature = simple_pseudo_signature{"zero"}; - constinit auto unknown_signature = simple_pseudo_signature{"<unknown>"}; + }; // namespace pseudo::pseudo(kstd::string name) @@ -43,18 +25,7 @@ namespace kernel::devices { if (facet == kernel::bus::pseudo_signature::id) { - if (name() == "null") - { - return &null_signature; - } - else if (name() == "zero") - { - return &zero_signature; - } - else - { - return &unknown_signature; - } + return &m_signature; } return device::query_facet(facet); diff --git a/kernel/kernel/devices/pseudo.hpp b/kernel/kernel/devices/pseudo.hpp index fb4ef2c8..efd504d5 100644 --- a/kernel/kernel/devices/pseudo.hpp +++ b/kernel/kernel/devices/pseudo.hpp @@ -8,15 +8,35 @@ #include <kstd/string.hpp> +#include <string_view> + namespace kernel::devices { + struct pseudo_signature final : kernel::bus::pseudo_signature + { + explicit constexpr pseudo_signature(kapi::devices::device const & device) + : m_name{device.name()} + {} + + [[nodiscard]] auto name() const noexcept -> std::string_view override + { + return m_name; + } + + private: + std::string_view m_name; + }; + struct pseudo final : kapi::devices::device { explicit pseudo(kstd::string name); protected: auto query_facet(kapi::capabilities::facet_id facet) -> void * override; + + private: + pseudo_signature m_signature{*this}; }; } // namespace kernel::devices |
