aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-30 19:12:28 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-30 19:12:28 +0200
commiteba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc (patch)
tree453a878b8e804773eddd39df81292295a5524c3d /kernel
parent782b3c8563b2aacfe8f48a49fc6de7cbc26c4861 (diff)
downloadkernel-eba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc.tar.xz
kernel-eba7cb0cd9f4740063dedb9ca960ca9f7cbbe9bc.zip
kernel/devices: generalize pseudo signature
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kernel/devices/pseudo.cpp33
-rw-r--r--kernel/kernel/devices/pseudo.hpp20
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