1
Fork 0
mirror of https://github.com/RGBCube/serenity synced 2025-07-25 14:37:46 +00:00

Kernel/USB: Add USB Driver register/unregister function

This commit is contained in:
Jesse Buhagiar 2022-05-18 00:05:02 +10:00 committed by Andrew Kaster
parent 3cead2801a
commit 2aa17f619c
2 changed files with 23 additions and 0 deletions

View file

@ -1,5 +1,6 @@
/* /*
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2023, Jesse Buhagiar <jesse.buhagiar@serenityos.org>
* *
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
@ -74,6 +75,20 @@ UNMAP_AFTER_INIT void USBManagement::initialize()
s_the.ensure_instance(); s_the.ensure_instance();
} }
void USBManagement::register_driver(NonnullLockRefPtr<Driver> driver)
{
dbgln_if(USB_DEBUG, "Registering driver {}", driver->name());
m_available_drivers.append(driver);
}
void USBManagement::unregister_driver(NonnullLockRefPtr<Driver> driver)
{
dbgln_if(USB_DEBUG, "Unregistering driver {}", driver->name());
auto const& found_driver = m_available_drivers.find(driver);
if (!found_driver.is_end())
m_available_drivers.remove(found_driver.index());
}
USBManagement& USBManagement::the() USBManagement& USBManagement::the()
{ {
return *s_the; return *s_the;

View file

@ -1,11 +1,13 @@
/* /*
* Copyright (c) 2021, Luke Wilde <lukew@serenityos.org> * Copyright (c) 2021, Luke Wilde <lukew@serenityos.org>
* Copyright (c) 2023, Jesse Buhagiar <jesse.buhagiar@serenityos.org>
* *
* SPDX-License-Identifier: BSD-2-Clause * SPDX-License-Identifier: BSD-2-Clause
*/ */
#pragma once #pragma once
#include <Kernel/Bus/USB/Drivers/USBDriver.h>
#include <Kernel/Bus/USB/USBController.h> #include <Kernel/Bus/USB/USBController.h>
#include <Kernel/Library/NonnullLockRefPtr.h> #include <Kernel/Library/NonnullLockRefPtr.h>
@ -19,10 +21,16 @@ public:
static void initialize(); static void initialize();
static USBManagement& the(); static USBManagement& the();
void register_driver(NonnullLockRefPtr<Driver> driver);
void unregister_driver(NonnullLockRefPtr<Driver> driver);
Vector<NonnullLockRefPtr<Driver>>& available_drivers() { return m_available_drivers; }
private: private:
void enumerate_controllers(); void enumerate_controllers();
USBController::List m_controllers; USBController::List m_controllers;
Vector<NonnullLockRefPtr<Driver>> m_available_drivers;
}; };
} }