Files
serenity/Kernel/Devices/Audio/Management.h
Liav A. 16244c490a Kernel: Allocate all device major numbers within one known header file
We used to allocate major numbers quite randomly, with no common place
to look them up if needed.
This commit is changing that by placing all major number allocations
under a new C++ namespace, in the API/MajorNumberAllocation.h file.

We also add the foundations of what is needed before we can publish this
information (allocated numbers for block and char devices) to userspace.
2024-07-06 21:42:32 +02:00

35 lines
762 B
C++

/*
* Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
*
* SPDX-License-Identifier: BSD-2-Clause
*/
#pragma once
#include <AK/Error.h>
#include <AK/IntrusiveList.h>
#include <AK/NonnullRefPtr.h>
#include <Kernel/Bus/PCI/Definitions.h>
#include <Kernel/Devices/Audio/Controller.h>
namespace Kernel {
class AudioManagement {
public:
AudioManagement();
static AudioManagement& the();
static MinorNumber generate_storage_minor_number();
bool initialize();
private:
ErrorOr<NonnullRefPtr<AudioController>> determine_audio_device(PCI::DeviceIdentifier const& device_identifier) const;
void enumerate_hardware_controllers();
SpinlockProtected<IntrusiveList<&AudioController::m_node>, LockRank::None> m_controllers_list;
};
}