diff --git a/Kernel/Bus/USB/USBManagement.cpp b/Kernel/Bus/USB/USBManagement.cpp index 6c868de957..07e5822532 100644 --- a/Kernel/Bus/USB/USBManagement.cpp +++ b/Kernel/Bus/USB/USBManagement.cpp @@ -81,6 +81,12 @@ void USBManagement::register_driver(NonnullLockRefPtr driver) m_available_drivers.append(driver); } +LockRefPtr USBManagement::get_driver_by_name(StringView name) +{ + auto it = m_available_drivers.find_if([name](auto driver) { return driver->name() == name; }); + return it.is_end() ? nullptr : LockRefPtr { *it }; +} + void USBManagement::unregister_driver(NonnullLockRefPtr driver) { dbgln_if(USB_DEBUG, "Unregistering driver {}", driver->name()); diff --git a/Kernel/Bus/USB/USBManagement.h b/Kernel/Bus/USB/USBManagement.h index 12337f007d..3940be2181 100644 --- a/Kernel/Bus/USB/USBManagement.h +++ b/Kernel/Bus/USB/USBManagement.h @@ -22,6 +22,7 @@ public: static USBManagement& the(); void register_driver(NonnullLockRefPtr driver); + LockRefPtr get_driver_by_name(StringView name); void unregister_driver(NonnullLockRefPtr driver); Vector>& available_drivers() { return m_available_drivers; }