diff options
| author | TSR Berry <20988865+TSRBerry@users.noreply.github.com> | 2023-04-08 01:22:00 +0200 |
|---|---|---|
| committer | Mary <thog@protonmail.com> | 2023-04-27 23:51:14 +0200 |
| commit | cee712105850ac3385cd0091a923438167433f9f (patch) | |
| tree | 4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs | |
| parent | cd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff) | |
Move solution and projects to src
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs')
| -rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs | 65 |
1 files changed, 0 insertions, 65 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs deleted file mode 100644 index 6d0a1658..00000000 --- a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryManager.cs +++ /dev/null @@ -1,65 +0,0 @@ -using Ryujinx.HLE.HOS.Kernel.Common; -using System; - -namespace Ryujinx.HLE.HOS.Kernel.Memory -{ - class KMemoryManager - { - public KMemoryRegionManager[] MemoryRegions { get; } - - public KMemoryManager(MemorySize size, MemoryArrange arrange) - { - MemoryRegions = KernelInit.GetMemoryRegions(size, arrange); - } - - private KMemoryRegionManager GetMemoryRegion(ulong address) - { - for (int i = 0; i < MemoryRegions.Length; i++) - { - var region = MemoryRegions[i]; - - if (address >= region.Address && address < region.EndAddr) - { - return region; - } - } - - return null; - } - - public void IncrementPagesReferenceCount(ulong address, ulong pagesCount) - { - IncrementOrDecrementPagesReferenceCount(address, pagesCount, true); - } - - public void DecrementPagesReferenceCount(ulong address, ulong pagesCount) - { - IncrementOrDecrementPagesReferenceCount(address, pagesCount, false); - } - - private void IncrementOrDecrementPagesReferenceCount(ulong address, ulong pagesCount, bool increment) - { - while (pagesCount != 0) - { - var region = GetMemoryRegion(address); - - ulong countToProcess = Math.Min(pagesCount, region.GetPageOffsetFromEnd(address)); - - lock (region) - { - if (increment) - { - region.IncrementPagesReferenceCount(address, countToProcess); - } - else - { - region.DecrementPagesReferenceCount(address, countToProcess); - } - } - - pagesCount -= countToProcess; - address += countToProcess * KPageTableBase.PageSize; - } - } - } -} |
