Serenity Operating System
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}