aboutsummaryrefslogtreecommitdiff
path: root/kernel/kapi/devices/interface_registry.cpp
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-07-24 09:11:12 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-07-24 09:11:12 +0200
commitef124ea26ebe98f16e0e8fb204ec1f419bf656ee (patch)
treedb1305f165ffc0b6b02b9bb18286270a0b429f95 /kernel/kapi/devices/interface_registry.cpp
parent6f68e16380bce9f34928ba10cbf0b92aeec393e5 (diff)
downloadkernel-ef124ea26ebe98f16e0e8fb204ec1f419bf656ee.tar.xz
kernel-ef124ea26ebe98f16e0e8fb204ec1f419bf656ee.zip
kapi: add find overload to find composed interfaces
Diffstat (limited to 'kernel/kapi/devices/interface_registry.cpp')
-rw-r--r--kernel/kapi/devices/interface_registry.cpp14
1 files changed, 14 insertions, 0 deletions
diff --git a/kernel/kapi/devices/interface_registry.cpp b/kernel/kapi/devices/interface_registry.cpp
index da3d080a..d959c857 100644
--- a/kernel/kapi/devices/interface_registry.cpp
+++ b/kernel/kapi/devices/interface_registry.cpp
@@ -97,6 +97,20 @@ namespace kapi::devices
return *found;
}
+ auto interface_registry::find(interface interface, device const & device) const -> kstd::result<entry>
+ {
+ auto found = std::ranges::find_if(m_entries, [&](auto e) {
+ auto locked_device = e.device();
+ return e.interface() == interface && locked_device && locked_device.get() == &device;
+ });
+ if (found == m_entries.cend())
+ {
+ return kstd::failure(make_error_code(kstd::errc::no_such_device));
+ }
+
+ return *found;
+ }
+
} // namespace kapi::devices
namespace kapi::test_support::devices