diff options
| author | Felix Morgner <felix.morgner@ost.ch> | 2026-07-24 09:11:12 +0200 |
|---|---|---|
| committer | Felix Morgner <felix.morgner@ost.ch> | 2026-07-24 09:11:12 +0200 |
| commit | ef124ea26ebe98f16e0e8fb204ec1f419bf656ee (patch) | |
| tree | db1305f165ffc0b6b02b9bb18286270a0b429f95 /kernel/kapi/devices | |
| parent | 6f68e16380bce9f34928ba10cbf0b92aeec393e5 (diff) | |
| download | kernel-ef124ea26ebe98f16e0e8fb204ec1f419bf656ee.tar.xz kernel-ef124ea26ebe98f16e0e8fb204ec1f419bf656ee.zip | |
kapi: add find overload to find composed interfaces
Diffstat (limited to 'kernel/kapi/devices')
| -rw-r--r-- | kernel/kapi/devices/interface_registry.cpp | 14 |
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 |
