diff options
author | liamwhite <liamwhite@users.noreply.github.com> | 2023-01-04 03:40:57 +0100 |
---|---|---|
committer | GitHub <noreply@github.com> | 2023-01-04 03:40:57 +0100 |
commit | bbeb6e460cf1fd8f796978980e745410bc77ce08 (patch) | |
tree | f74e52f633f8911929cf9f394b7a7bd1202f81c5 /src/core/hle/kernel/k_page_group.cpp | |
parent | Merge pull request #9547 from MonsterDruide1/tas-doesnt-flap (diff) | |
parent | Revert "k_page_group: synchronize" (diff) | |
download | yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar.gz yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar.bz2 yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar.lz yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar.xz yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.tar.zst yuzu-bbeb6e460cf1fd8f796978980e745410bc77ce08.zip |
Diffstat (limited to 'src/core/hle/kernel/k_page_group.cpp')
-rw-r--r-- | src/core/hle/kernel/k_page_group.cpp | 121 |
1 files changed, 0 insertions, 121 deletions
diff --git a/src/core/hle/kernel/k_page_group.cpp b/src/core/hle/kernel/k_page_group.cpp deleted file mode 100644 index d8c644a33..000000000 --- a/src/core/hle/kernel/k_page_group.cpp +++ /dev/null @@ -1,121 +0,0 @@ -// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project -// SPDX-License-Identifier: GPL-2.0-or-later - -#include "core/hle/kernel/k_dynamic_resource_manager.h" -#include "core/hle/kernel/k_memory_manager.h" -#include "core/hle/kernel/k_page_group.h" -#include "core/hle/kernel/kernel.h" -#include "core/hle/kernel/svc_results.h" - -namespace Kernel { - -void KPageGroup::Finalize() { - KBlockInfo* cur = m_first_block; - while (cur != nullptr) { - KBlockInfo* next = cur->GetNext(); - m_manager->Free(cur); - cur = next; - } - - m_first_block = nullptr; - m_last_block = nullptr; -} - -void KPageGroup::CloseAndReset() { - auto& mm = m_kernel.MemoryManager(); - - KBlockInfo* cur = m_first_block; - while (cur != nullptr) { - KBlockInfo* next = cur->GetNext(); - mm.Close(cur->GetAddress(), cur->GetNumPages()); - m_manager->Free(cur); - cur = next; - } - - m_first_block = nullptr; - m_last_block = nullptr; -} - -size_t KPageGroup::GetNumPages() const { - size_t num_pages = 0; - - for (const auto& it : *this) { - num_pages += it.GetNumPages(); - } - - return num_pages; -} - -Result KPageGroup::AddBlock(KPhysicalAddress addr, size_t num_pages) { - // Succeed immediately if we're adding no pages. - R_SUCCEED_IF(num_pages == 0); - - // Check for overflow. - ASSERT(addr < addr + num_pages * PageSize); - - // Try to just append to the last block. - if (m_last_block != nullptr) { - R_SUCCEED_IF(m_last_block->TryConcatenate(addr, num_pages)); - } - - // Allocate a new block. - KBlockInfo* new_block = m_manager->Allocate(); - R_UNLESS(new_block != nullptr, ResultOutOfResource); - - // Initialize the block. - new_block->Initialize(addr, num_pages); - - // Add the block to our list. - if (m_last_block != nullptr) { - m_last_block->SetNext(new_block); - } else { - m_first_block = new_block; - } - m_last_block = new_block; - - R_SUCCEED(); -} - -void KPageGroup::Open() const { - auto& mm = m_kernel.MemoryManager(); - - for (const auto& it : *this) { - mm.Open(it.GetAddress(), it.GetNumPages()); - } -} - -void KPageGroup::OpenFirst() const { - auto& mm = m_kernel.MemoryManager(); - - for (const auto& it : *this) { - mm.OpenFirst(it.GetAddress(), it.GetNumPages()); - } -} - -void KPageGroup::Close() const { - auto& mm = m_kernel.MemoryManager(); - - for (const auto& it : *this) { - mm.Close(it.GetAddress(), it.GetNumPages()); - } -} - -bool KPageGroup::IsEquivalentTo(const KPageGroup& rhs) const { - auto lit = this->begin(); - auto rit = rhs.begin(); - auto lend = this->end(); - auto rend = rhs.end(); - - while (lit != lend && rit != rend) { - if (*lit != *rit) { - return false; - } - - ++lit; - ++rit; - } - - return lit == lend && rit == rend; -} - -} // namespace Kernel |