Serenity Operating System
at master 38 lines 933 B view raw
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}