/* * Copyright (c) 2021, the SerenityOS developers. * * SPDX-License-Identifier: BSD-2-Clause */ #pragma once #include #include namespace Kernel { class RamdiskController; class RamdiskDevice final : public StorageDevice { friend class RamdiskController; AK_MAKE_ETERNAL public: static NonnullRefPtr create(const RamdiskController&, NonnullOwnPtr&& region, int major, int minor); RamdiskDevice(const RamdiskController&, NonnullOwnPtr&&, int major, int minor); virtual ~RamdiskDevice() override; // ^BlockDevice virtual void start_request(AsyncBlockDeviceRequest&) override; // ^DiskDevice virtual const char* class_name() const override; virtual String device_name() const override; bool is_slave() const; Lock m_lock { "RamdiskDevice" }; NonnullOwnPtr m_region; }; }