k_page_buffer.h 866 B

123456789101112131415161718192021222324252627282930313233343536
  1. // SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
  2. // SPDX-License-Identifier: GPL-2.0-or-later
  3. #pragma once
  4. #include <array>
  5. #include "common/common_types.h"
  6. #include "core/hle/kernel/memory_types.h"
  7. #include "core/hle/kernel/slab_helpers.h"
  8. namespace Kernel {
  9. class KernelCore;
  10. class KPageBufferSlabHeap : protected impl::KSlabHeapImpl {
  11. public:
  12. static constexpr size_t BufferSize = PageSize;
  13. public:
  14. void Initialize(Core::System& system);
  15. };
  16. class KPageBuffer final : public KSlabAllocated<KPageBuffer> {
  17. public:
  18. explicit KPageBuffer(KernelCore&) {}
  19. KPageBuffer() = default;
  20. static KPageBuffer* FromPhysicalAddress(Core::System& system, PAddr phys_addr);
  21. private:
  22. alignas(PageSize) std::array<u8, PageSize> m_buffer{};
  23. };
  24. static_assert(sizeof(KPageBuffer) == KPageBufferSlabHeap::BufferSize);
  25. } // namespace Kernel