aboutsummaryrefslogtreecommitdiff
path: root/kernel
diff options
context:
space:
mode:
authorFelix Morgner <felix.morgner@ost.ch>2026-04-02 15:18:05 +0200
committerFelix Morgner <felix.morgner@ost.ch>2026-04-02 15:18:05 +0200
commit3e80b6baa8f9666a9dd3cd4531bc68a3de4fee92 (patch)
tree29bd443811905ead4e8bdd2b350c429757c8b8be /kernel
parentab4c59912c526d515e6e72188c08a7f92e5573e8 (diff)
downloadteachos-3e80b6baa8f9666a9dd3cd4531bc68a3de4fee92.tar.xz
teachos-3e80b6baa8f9666a9dd3cd4531bc68a3de4fee92.zip
kapi: allow for device searches
Diffstat (limited to 'kernel')
-rw-r--r--kernel/kapi/devices.cpp22
1 files changed, 22 insertions, 0 deletions
diff --git a/kernel/kapi/devices.cpp b/kernel/kapi/devices.cpp
index c0b738e..7d35778 100644
--- a/kernel/kapi/devices.cpp
+++ b/kernel/kapi/devices.cpp
@@ -11,6 +11,7 @@
#include <atomic>
#include <cstddef>
#include <optional>
+#include <string_view>
#include <utility>
namespace kapi::devices
@@ -62,4 +63,25 @@ namespace kapi::devices
return false;
}
+ auto find_device(std::size_t major, std::size_t minor) -> kstd::observer_ptr<device>
+ {
+ if (device_tree.contains(std::pair{major, minor}))
+ {
+ return device_tree.at(std::pair{major, minor});
+ }
+ return nullptr;
+ }
+
+ auto find_device(std::string_view name) -> kstd::observer_ptr<device>
+ {
+ for (auto const & [key, value] : device_tree)
+ {
+ if (value->name() == name)
+ {
+ return value;
+ }
+ }
+ return nullptr;
+ }
+
} // namespace kapi::devices \ No newline at end of file