/* * Copyright (c) 2022, Liav A. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include #include namespace Kernel { class Device; class SysFSBlockDevicesDirectory final : public SysFSDirectory { public: virtual StringView name() const override { return "block"sv; } static NonnullRefPtr must_create(SysFSDeviceIdentifiersDirectory const&); virtual ErrorOr traverse_as_directory(FileSystemID, Function(FileSystem::DirectoryEntryView const&)>) const override; virtual RefPtr lookup(StringView name) override; static SysFSBlockDevicesDirectory& the(); using DevicesList = SpinlockProtected>; DevicesList& devices_list(Badge) { return m_devices_list; } private: explicit SysFSBlockDevicesDirectory(SysFSDeviceIdentifiersDirectory const&); DevicesList m_devices_list; }; }