RamdiskDevice.h 956 B

1234567891011121314151617181920212223242526272829303132333435363738
  1. /*
  2. * Copyright (c) 2021, the SerenityOS developers.
  3. *
  4. * SPDX-License-Identifier: BSD-2-Clause
  5. */
  6. #pragma once
  7. #include <Kernel/Locking/Mutex.h>
  8. #include <Kernel/Storage/StorageDevice.h>
  9. namespace Kernel {
  10. class RamdiskController;
  11. class RamdiskDevice final : public StorageDevice {
  12. friend class RamdiskController;
  13. AK_MAKE_ETERNAL
  14. public:
  15. static NonnullRefPtr<RamdiskDevice> create(const RamdiskController&, NonnullOwnPtr<Memory::Region>&& region, int major, int minor);
  16. RamdiskDevice(const RamdiskController&, NonnullOwnPtr<Memory::Region>&&, int major, int minor);
  17. virtual ~RamdiskDevice() override;
  18. // ^BlockDevice
  19. virtual void start_request(AsyncBlockDeviceRequest&) override;
  20. // ^DiskDevice
  21. virtual StringView class_name() const override;
  22. virtual String device_name() const override;
  23. bool is_slave() const;
  24. Mutex m_lock { "RamdiskDevice" };
  25. NonnullOwnPtr<Memory::Region> m_region;
  26. };
  27. }