Serenity Operating System
at master 36 lines 937 B view raw
1/* 2 * Copyright (c) 2021, the SerenityOS developers. 3 * 4 * SPDX-License-Identifier: BSD-2-Clause 5 */ 6 7#pragma once 8 9#include <AK/OwnPtr.h> 10#include <AK/Types.h> 11#include <Kernel/Library/LockRefPtr.h> 12#include <Kernel/Storage/Ramdisk/Device.h> 13#include <Kernel/Storage/StorageController.h> 14#include <Kernel/Storage/StorageDevice.h> 15 16namespace Kernel { 17 18class AsyncBlockDeviceRequest; 19 20class RamdiskController final : public StorageController { 21public: 22 static NonnullLockRefPtr<RamdiskController> initialize(); 23 virtual ~RamdiskController() override; 24 25 virtual LockRefPtr<StorageDevice> device(u32 index) const override; 26 virtual bool reset() override; 27 virtual bool shutdown() override; 28 virtual size_t devices_count() const override; 29 virtual void complete_current_request(AsyncDeviceRequest::RequestResult) override; 30 31private: 32 RamdiskController(); 33 34 Vector<NonnullLockRefPtr<RamdiskDevice>> m_devices; 35}; 36}