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:
parent
3cead2801a
commit
2aa17f619c
2 changed files with 23 additions and 0 deletions
|
@ -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;
|
||||||
|
|
|
@ -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;
|
||||||
};
|
};
|
||||||
|
|
||||||
}
|
}
|
||||||
|
|
Loading…
Add table
Add a link
Reference in a new issue