Serenity Operating System
1/*
2 * Copyright (c) 2022, Liav A. <liavalb@hotmail.co.il>
3 *
4 * SPDX-License-Identifier: BSD-2-Clause
5 */
6
7#pragma once
8
9#include <Kernel/FileSystem/FileSystem.h>
10#include <Kernel/FileSystem/Inode.h>
11#include <Kernel/FileSystem/SysFS/Component.h>
12#include <Kernel/FileSystem/SysFS/RootDirectory.h>
13#include <Kernel/FileSystem/SysFS/Subsystems/DeviceIdentifiers/DeviceComponent.h>
14#include <Kernel/Locking/MutexProtected.h>
15
16namespace Kernel {
17
18class SysFSComponentRegistry {
19
20public:
21 static SysFSComponentRegistry& the();
22
23 static void initialize();
24
25 SysFSComponentRegistry();
26 void register_new_component(SysFSComponent&);
27
28 SysFSDirectory& root_directory() { return m_root_directory; }
29
30 void register_new_bus_directory(SysFSDirectory&);
31 SysFSBusDirectory& buses_directory();
32
33private:
34 NonnullLockRefPtr<SysFSRootDirectory> m_root_directory;
35 Spinlock<LockRank::None> m_root_directory_lock {};
36};
37
38}