aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Memory
diff options
context:
space:
mode:
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Memory')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KCodeMemory.cs43
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs6
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KMemoryRegionManager.cs18
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KPageList.cs6
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs46
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs261
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KSharedMemory.cs5
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs21
8 files changed, 205 insertions, 201 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KCodeMemory.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KCodeMemory.cs
index 05cf4a4f..11474e49 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KCodeMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KCodeMemory.cs
@@ -1,6 +1,7 @@
using Ryujinx.Common;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Process;
+using Ryujinx.Horizon.Common;
using System;
using System.Diagnostics;
@@ -21,13 +22,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_lock = new object();
}
- public KernelResult Initialize(ulong address, ulong size)
+ public Result Initialize(ulong address, ulong size)
{
Owner = KernelStatic.GetCurrentProcess();
- KernelResult result = Owner.MemoryManager.BorrowCodeMemory(_pageList, address, size);
+ Result result = Owner.MemoryManager.BorrowCodeMemory(_pageList, address, size);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -39,10 +40,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isMapped = false;
_isOwnerMapped = false;
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult Map(ulong address, ulong size, KMemoryPermission perm)
+ public Result Map(ulong address, ulong size, KMemoryPermission perm)
{
if (_pageList.GetPagesCount() != BitUtils.DivRoundUp<ulong>(size, (ulong)KPageTableBase.PageSize))
{
@@ -58,9 +59,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KProcess process = KernelStatic.GetCurrentProcess();
- KernelResult result = process.MemoryManager.MapPages(address, _pageList, MemoryState.CodeWritable, KMemoryPermission.ReadAndWrite);
+ Result result = process.MemoryManager.MapPages(address, _pageList, MemoryState.CodeWritable, KMemoryPermission.ReadAndWrite);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -68,10 +69,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isMapped = true;
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult MapToOwner(ulong address, ulong size, KMemoryPermission permission)
+ public Result MapToOwner(ulong address, ulong size, KMemoryPermission permission)
{
if (_pageList.GetPagesCount() != BitUtils.DivRoundUp<ulong>(size, (ulong)KPageTableBase.PageSize))
{
@@ -87,9 +88,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
Debug.Assert(permission == KMemoryPermission.Read || permission == KMemoryPermission.ReadAndExecute);
- KernelResult result = Owner.MemoryManager.MapPages(address, _pageList, MemoryState.CodeReadOnly, permission);
+ Result result = Owner.MemoryManager.MapPages(address, _pageList, MemoryState.CodeReadOnly, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -97,10 +98,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isOwnerMapped = true;
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult Unmap(ulong address, ulong size)
+ public Result Unmap(ulong address, ulong size)
{
if (_pageList.GetPagesCount() != BitUtils.DivRoundUp<ulong>(size, (ulong)KPageTableBase.PageSize))
{
@@ -111,9 +112,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
KProcess process = KernelStatic.GetCurrentProcess();
- KernelResult result = process.MemoryManager.UnmapPages(address, _pageList, MemoryState.CodeWritable);
+ Result result = process.MemoryManager.UnmapPages(address, _pageList, MemoryState.CodeWritable);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -123,10 +124,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isMapped = false;
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult UnmapFromOwner(ulong address, ulong size)
+ public Result UnmapFromOwner(ulong address, ulong size)
{
if (_pageList.GetPagesCount() != BitUtils.DivRoundUp<ulong>(size, KPageTableBase.PageSize))
{
@@ -135,9 +136,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
lock (_lock)
{
- KernelResult result = Owner.MemoryManager.UnmapPages(address, _pageList, MemoryState.CodeReadOnly);
+ Result result = Owner.MemoryManager.UnmapPages(address, _pageList, MemoryState.CodeReadOnly);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -147,7 +148,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isOwnerMapped = false;
}
- return KernelResult.Success;
+ return Result.Success;
}
protected override void Destroy()
@@ -156,7 +157,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
ulong size = _pageList.GetPagesCount() * KPageTableBase.PageSize;
- if (Owner.MemoryManager.UnborrowCodeMemory(_address, size, _pageList) != KernelResult.Success)
+ if (Owner.MemoryManager.UnborrowCodeMemory(_address, size, _pageList) != Result.Success)
{
throw new InvalidOperationException("Unexpected failure restoring transfer memory attributes.");
}
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
index 9cfdfda3..e9146aeb 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryBlockManager.cs
@@ -1,5 +1,5 @@
using Ryujinx.Common.Collections;
-using Ryujinx.HLE.HOS.Kernel.Common;
+using Ryujinx.Horizon.Common;
using System.Diagnostics;
namespace Ryujinx.HLE.HOS.Kernel.Memory
@@ -22,7 +22,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockTree = new IntrusiveRedBlackTree<KMemoryBlock>();
}
- public KernelResult Initialize(ulong addrSpaceStart, ulong addrSpaceEnd, KMemoryBlockSlabManager slabManager)
+ public Result Initialize(ulong addrSpaceStart, ulong addrSpaceEnd, KMemoryBlockSlabManager slabManager)
{
_slabManager = slabManager;
_addrSpaceStart = addrSpaceStart;
@@ -43,7 +43,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KMemoryPermission.None,
MemoryAttribute.None));
- return KernelResult.Success;
+ return Result.Success;
}
public void InsertBlock(
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryRegionManager.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryRegionManager.cs
index 43d48946..5e6273b8 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryRegionManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KMemoryRegionManager.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Common;
+using Ryujinx.Horizon.Common;
using System.Diagnostics;
namespace Ryujinx.HLE.HOS.Kernel.Memory
@@ -25,20 +25,20 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_pageHeap.UpdateUsedSize();
}
- public KernelResult AllocatePages(out KPageList pageList, ulong pagesCount)
+ public Result AllocatePages(out KPageList pageList, ulong pagesCount)
{
if (pagesCount == 0)
{
pageList = new KPageList();
- return KernelResult.Success;
+ return Result.Success;
}
lock (_pageHeap)
{
- KernelResult result = AllocatePagesImpl(out pageList, pagesCount, false);
+ Result result = AllocatePagesImpl(out pageList, pagesCount, false);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
foreach (var node in pageList)
{
@@ -71,7 +71,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- private KernelResult AllocatePagesImpl(out KPageList pageList, ulong pagesCount, bool random)
+ private Result AllocatePagesImpl(out KPageList pageList, ulong pagesCount, bool random)
{
pageList = new KPageList();
@@ -95,9 +95,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
break;
}
- KernelResult result = pageList.AddRange(allocatedBlock, pagesPerAlloc);
+ Result result = pageList.AddRange(allocatedBlock, pagesPerAlloc);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
FreePages(pageList);
_pageHeap.Free(allocatedBlock, pagesPerAlloc);
@@ -116,7 +116,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfMemory;
}
- return KernelResult.Success;
+ return Result.Success;
}
private ulong AllocatePagesContiguousImpl(ulong pagesCount, ulong alignPages, bool random)
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KPageList.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KPageList.cs
index 7f2f1ba6..3149faa9 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KPageList.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KPageList.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Common;
+using Ryujinx.Horizon.Common;
using System.Collections;
using System.Collections.Generic;
@@ -13,7 +13,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
Nodes = new LinkedList<KPageNode>();
}
- public KernelResult AddRange(ulong address, ulong pagesCount)
+ public Result AddRange(ulong address, ulong pagesCount)
{
if (pagesCount != 0)
{
@@ -33,7 +33,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
Nodes.AddLast(new KPageNode(address, pagesCount));
}
- return KernelResult.Success;
+ return Result.Success;
}
public ulong GetPagesCount()
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
index 9d521231..9b7c99ba 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTable.cs
@@ -1,4 +1,4 @@
-using Ryujinx.HLE.HOS.Kernel.Common;
+using Ryujinx.Horizon.Common;
using Ryujinx.Memory;
using System;
using System.Diagnostics;
@@ -31,31 +31,31 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
/// <inheritdoc/>
- protected override KernelResult MapMemory(ulong src, ulong dst, ulong pagesCount, KMemoryPermission oldSrcPermission, KMemoryPermission newDstPermission)
+ protected override Result MapMemory(ulong src, ulong dst, ulong pagesCount, KMemoryPermission oldSrcPermission, KMemoryPermission newDstPermission)
{
KPageList pageList = new KPageList();
GetPhysicalRegions(src, pagesCount * PageSize, pageList);
- KernelResult result = Reprotect(src, pagesCount, KMemoryPermission.None);
+ Result result = Reprotect(src, pagesCount, KMemoryPermission.None);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
result = MapPages(dst, pageList, newDstPermission, false, 0);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
- KernelResult reprotectResult = Reprotect(src, pagesCount, oldSrcPermission);
- Debug.Assert(reprotectResult == KernelResult.Success);
+ Result reprotectResult = Reprotect(src, pagesCount, oldSrcPermission);
+ Debug.Assert(reprotectResult == Result.Success);
}
return result;
}
/// <inheritdoc/>
- protected override KernelResult UnmapMemory(ulong dst, ulong src, ulong pagesCount, KMemoryPermission oldDstPermission, KMemoryPermission newSrcPermission)
+ protected override Result UnmapMemory(ulong dst, ulong src, ulong pagesCount, KMemoryPermission oldDstPermission, KMemoryPermission newSrcPermission)
{
ulong size = pagesCount * PageSize;
@@ -70,26 +70,26 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.InvalidMemRange;
}
- KernelResult result = Unmap(dst, pagesCount);
+ Result result = Unmap(dst, pagesCount);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
result = Reprotect(src, pagesCount, newSrcPermission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
- KernelResult mapResult = MapPages(dst, dstPageList, oldDstPermission, false, 0);
- Debug.Assert(mapResult == KernelResult.Success);
+ Result mapResult = MapPages(dst, dstPageList, oldDstPermission, false, 0);
+ Debug.Assert(mapResult == Result.Success);
}
return result;
}
/// <inheritdoc/>
- protected override KernelResult MapPages(ulong dstVa, ulong pagesCount, ulong srcPa, KMemoryPermission permission, bool shouldFillPages, byte fillValue)
+ protected override Result MapPages(ulong dstVa, ulong pagesCount, ulong srcPa, KMemoryPermission permission, bool shouldFillPages, byte fillValue)
{
ulong size = pagesCount * PageSize;
@@ -107,11 +107,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_cpuMemory.Fill(dstVa, size, fillValue);
}
- return KernelResult.Success;
+ return Result.Success;
}
/// <inheritdoc/>
- protected override KernelResult MapPages(ulong address, KPageList pageList, KMemoryPermission permission, bool shouldFillPages, byte fillValue)
+ protected override Result MapPages(ulong address, KPageList pageList, KMemoryPermission permission, bool shouldFillPages, byte fillValue)
{
using var scopedPageList = new KScopedPageList(Context.MemoryManager, pageList);
@@ -136,11 +136,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
scopedPageList.SignalSuccess();
- return KernelResult.Success;
+ return Result.Success;
}
/// <inheritdoc/>
- protected override KernelResult Unmap(ulong address, ulong pagesCount)
+ protected override Result Unmap(ulong address, ulong pagesCount)
{
KPageList pagesToClose = new KPageList();
@@ -159,21 +159,21 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
pagesToClose.DecrementPagesReferenceCount(Context.MemoryManager);
- return KernelResult.Success;
+ return Result.Success;
}
/// <inheritdoc/>
- protected override KernelResult Reprotect(ulong address, ulong pagesCount, KMemoryPermission permission)
+ protected override Result Reprotect(ulong address, ulong pagesCount, KMemoryPermission permission)
{
// TODO.
- return KernelResult.Success;
+ return Result.Success;
}
/// <inheritdoc/>
- protected override KernelResult ReprotectWithAttributes(ulong address, ulong pagesCount, KMemoryPermission permission)
+ protected override Result ReprotectWithAttributes(ulong address, ulong pagesCount, KMemoryPermission permission)
{
// TODO.
- return KernelResult.Success;
+ return Result.Success;
}
/// <inheritdoc/>
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
index 2c94cba2..e19e22c8 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
@@ -1,6 +1,7 @@
using Ryujinx.Common;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Process;
+using Ryujinx.Horizon.Common;
using System;
using System.Collections.Generic;
using System.Diagnostics;
@@ -88,7 +89,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
private static readonly int[] AddrSpaceSizes = new int[] { 32, 36, 32, 39 };
- public KernelResult InitializeForProcess(
+ public Result InitializeForProcess(
AddressSpaceType addrSpaceType,
bool aslrEnabled,
bool aslrDisabled,
@@ -107,7 +108,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong addrSpaceBase = 0;
ulong addrSpaceSize = 1UL << AddrSpaceSizes[(int)addrSpaceType];
- KernelResult result = CreateUserAddressSpace(
+ Result result = CreateUserAddressSpace(
addrSpaceType,
aslrEnabled,
aslrDisabled,
@@ -118,7 +119,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
size,
slabManager);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
Context.ContextIdManager.PutId(_contextId);
}
@@ -134,7 +135,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
public ulong AslrOffset;
}
- private KernelResult CreateUserAddressSpace(
+ private Result CreateUserAddressSpace(
AddressSpaceType addrSpaceType,
bool aslrEnabled,
bool aslrDisabled,
@@ -342,7 +343,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult MapPages(ulong address, KPageList pageList, MemoryState state, KMemoryPermission permission)
+ public Result MapPages(ulong address, KPageList pageList, MemoryState state, KMemoryPermission permission)
{
ulong pagesCount = pageList.GetPagesCount();
@@ -365,9 +366,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfResource;
}
- KernelResult result = MapPages(address, pageList, permission);
+ Result result = MapPages(address, pageList, permission);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_blockManager.InsertBlock(address, pagesCount, state, permission);
}
@@ -376,7 +377,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnmapPages(ulong address, KPageList pageList, MemoryState stateExpected)
+ public Result UnmapPages(ulong address, KPageList pageList, MemoryState stateExpected)
{
ulong pagesCount = pageList.GetPagesCount();
ulong size = pagesCount * PageSize;
@@ -430,9 +431,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfResource;
}
- KernelResult result = Unmap(address, pagesCount);
+ Result result = Unmap(address, pagesCount);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_blockManager.InsertBlock(address, pagesCount, MemoryState.Unmapped);
}
@@ -446,19 +447,19 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult MapNormalMemory(long address, long size, KMemoryPermission permission)
+ public Result MapNormalMemory(long address, long size, KMemoryPermission permission)
{
// TODO.
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult MapIoMemory(long address, long size, KMemoryPermission permission)
+ public Result MapIoMemory(long address, long size, KMemoryPermission permission)
{
// TODO.
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult MapPages(
+ public Result MapPages(
ulong pagesCount,
int alignment,
ulong srcPa,
@@ -497,7 +498,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfResource;
}
- KernelResult result;
+ Result result;
if (paIsValid)
{
@@ -508,7 +509,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
result = AllocateAndMapPages(address, pagesCount, permission);
}
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -516,10 +517,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, state, permission);
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult MapPages(ulong address, ulong pagesCount, MemoryState state, KMemoryPermission permission)
+ public Result MapPages(ulong address, ulong pagesCount, MemoryState state, KMemoryPermission permission)
{
ulong size = pagesCount * PageSize;
@@ -540,9 +541,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfResource;
}
- KernelResult result = AllocateAndMapPages(address, pagesCount, permission);
+ Result result = AllocateAndMapPages(address, pagesCount, permission);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_blockManager.InsertBlock(address, pagesCount, state, permission);
}
@@ -551,13 +552,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- private KernelResult AllocateAndMapPages(ulong address, ulong pagesCount, KMemoryPermission permission)
+ private Result AllocateAndMapPages(ulong address, ulong pagesCount, KMemoryPermission permission)
{
KMemoryRegionManager region = GetMemoryRegionManager();
- KernelResult result = region.AllocatePages(out KPageList pageList, pagesCount);
+ Result result = region.AllocatePages(out KPageList pageList, pagesCount);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -567,7 +568,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return MapPages(address, pageList, permission);
}
- public KernelResult MapProcessCodeMemory(ulong dst, ulong src, ulong size)
+ public Result MapProcessCodeMemory(ulong dst, ulong src, ulong size)
{
lock (_blockManager)
{
@@ -596,12 +597,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result = MapMemory(src, dst, pagesCount, permission, KMemoryPermission.None);
+ Result result = MapMemory(src, dst, pagesCount, permission, KMemoryPermission.None);
_blockManager.InsertBlock(src, pagesCount, state, KMemoryPermission.None, MemoryAttribute.Borrowed);
_blockManager.InsertBlock(dst, pagesCount, MemoryState.ModCodeStatic);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -610,7 +611,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnmapProcessCodeMemory(ulong dst, ulong src, ulong size)
+ public Result UnmapProcessCodeMemory(ulong dst, ulong src, ulong size)
{
lock (_blockManager)
{
@@ -656,9 +657,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
ulong pagesCount = size / PageSize;
- KernelResult result = Unmap(dst, pagesCount);
+ Result result = Unmap(dst, pagesCount);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -673,7 +674,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(dst, pagesCount, MemoryState.Unmapped);
_blockManager.InsertBlock(src, pagesCount, MemoryState.Heap, KMemoryPermission.ReadAndWrite);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -682,7 +683,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult SetHeapSize(ulong size, out ulong address)
+ public Result SetHeapSize(ulong size, out ulong address)
{
address = 0;
@@ -712,7 +713,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KMemoryRegionManager region = GetMemoryRegionManager();
- KernelResult result = region.AllocatePages(out KPageList pageList, pagesCount);
+ Result result = region.AllocatePages(out KPageList pageList, pagesCount);
using var _ = new OnScopeExit(() => pageList.DecrementPagesReferenceCount(Context.MemoryManager));
@@ -724,7 +725,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -747,7 +748,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
result = MapPages(_currentHeapAddr, pageList, KMemoryPermission.ReadAndWrite, true, (byte)_heapFillValue);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -786,9 +787,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = sizeDelta / PageSize;
- KernelResult result = Unmap(freeAddr, pagesCount);
+ Result result = Unmap(freeAddr, pagesCount);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -803,10 +804,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
address = HeapRegionStart;
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult SetMemoryPermission(ulong address, ulong size, KMemoryPermission permission)
+ public Result SetMemoryPermission(ulong address, ulong size, KMemoryPermission permission)
{
lock (_blockManager)
{
@@ -833,9 +834,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result = Reprotect(address, pagesCount, permission);
+ Result result = Reprotect(address, pagesCount, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -843,7 +844,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, oldState, permission);
}
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -865,17 +866,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return _currentHeapAddr - HeapRegionStart;
}
- public KernelResult SetHeapCapacity(ulong capacity)
+ public Result SetHeapCapacity(ulong capacity)
{
lock (_blockManager)
{
_heapCapacity = capacity;
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult SetMemoryAttribute(
+ public Result SetMemoryAttribute(
ulong address,
ulong size,
MemoryAttribute attributeMask,
@@ -909,7 +910,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, state, permission, attribute);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -942,7 +943,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult Map(ulong dst, ulong src, ulong size)
+ public Result Map(ulong dst, ulong src, ulong size)
{
bool success;
@@ -973,9 +974,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result = MapMemory(src, dst, pagesCount, KMemoryPermission.ReadAndWrite, KMemoryPermission.ReadAndWrite);
+ Result result = MapMemory(src, dst, pagesCount, KMemoryPermission.ReadAndWrite, KMemoryPermission.ReadAndWrite);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -983,7 +984,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(src, pagesCount, srcState, KMemoryPermission.None, MemoryAttribute.Borrowed);
_blockManager.InsertBlock(dst, pagesCount, MemoryState.Stack, KMemoryPermission.ReadAndWrite);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -992,7 +993,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnmapForKernel(ulong address, ulong pagesCount, MemoryState stateExpected)
+ public Result UnmapForKernel(ulong address, ulong pagesCount, MemoryState stateExpected)
{
ulong size = pagesCount * PageSize;
@@ -1017,14 +1018,14 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.OutOfResource;
}
- KernelResult result = Unmap(address, pagesCount);
+ Result result = Unmap(address, pagesCount);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_blockManager.InsertBlock(address, pagesCount, MemoryState.Unmapped);
}
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -1033,7 +1034,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult Unmap(ulong dst, ulong src, ulong size)
+ public Result Unmap(ulong dst, ulong src, ulong size)
{
bool success;
@@ -1076,9 +1077,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result = UnmapMemory(dst, src, pagesCount, dstPermission, KMemoryPermission.ReadAndWrite);
+ Result result = UnmapMemory(dst, src, pagesCount, dstPermission, KMemoryPermission.ReadAndWrite);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -1086,7 +1087,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(src, pagesCount, srcState, KMemoryPermission.ReadAndWrite);
_blockManager.InsertBlock(dst, pagesCount, MemoryState.Unmapped);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -1095,7 +1096,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnmapProcessMemory(ulong dst, ulong size, KPageTableBase srcPageTable, ulong src)
+ public Result UnmapProcessMemory(ulong dst, ulong size, KPageTableBase srcPageTable, ulong src)
{
lock (_blockManager)
{
@@ -1153,20 +1154,20 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result = Unmap(dst, pagesCount);
+ Result result = Unmap(dst, pagesCount);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
_blockManager.InsertBlock(dst, pagesCount, MemoryState.Unmapped);
- return KernelResult.Success;
+ return Result.Success;
}
}
- public KernelResult SetProcessMemoryPermission(ulong address, ulong size, KMemoryPermission permission)
+ public Result SetProcessMemoryPermission(ulong address, ulong size, KMemoryPermission permission)
{
lock (_blockManager)
{
@@ -1213,7 +1214,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = size / PageSize;
- KernelResult result;
+ Result result;
if ((oldPermission & KMemoryPermission.Execute) != 0)
{
@@ -1224,7 +1225,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
result = Reprotect(address, pagesCount, permission);
}
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -1232,7 +1233,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, newState, permission);
}
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -1241,7 +1242,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult MapPhysicalMemory(ulong address, ulong size)
+ public Result MapPhysicalMemory(ulong address, ulong size)
{
ulong endAddr = address + size;
@@ -1259,7 +1260,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (mappedSize == size)
{
- return KernelResult.Success;
+ return Result.Success;
}
ulong remainingSize = size - mappedSize;
@@ -1276,7 +1277,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KMemoryRegionManager region = GetMemoryRegionManager();
- KernelResult result = region.AllocatePages(out KPageList pageList, remainingPages);
+ Result result = region.AllocatePages(out KPageList pageList, remainingPages);
using var _ = new OnScopeExit(() => pageList.DecrementPagesReferenceCount(Context.MemoryManager));
@@ -1285,7 +1286,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
currentProcess.ResourceLimit?.Release(LimitableResource.Memory, remainingSize);
}
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -1357,10 +1358,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MemoryAttribute.None);
}
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult UnmapPhysicalMemory(ulong address, ulong size)
+ public Result UnmapPhysicalMemory(ulong address, ulong size)
{
ulong endAddr = address + size;
@@ -1391,7 +1392,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (heapMappedSize == 0)
{
- return KernelResult.Success;
+ return Result.Success;
}
if (!_slabManager.CanAllocate(MaxBlocksNeededForInsertion))
@@ -1400,7 +1401,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
// Try to unmap all the heap mapped memory inside range.
- KernelResult result = KernelResult.Success;
+ Result result = Result.Success;
foreach (KMemoryInfo info in IterateOverRange(address, endAddr))
{
@@ -1416,11 +1417,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
// The kernel would attempt to remap if this fails, but we don't because:
// - The implementation may not support remapping if memory aliasing is not supported on the platform.
// - Unmap can't ever fail here anyway.
- Debug.Assert(result == KernelResult.Success);
+ Debug.Assert(result == Result.Success);
}
}
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
PhysicalMemoryUsage -= heapMappedSize;
@@ -1437,7 +1438,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult CopyDataToCurrentProcess(
+ public Result CopyDataToCurrentProcess(
ulong dst,
ulong size,
ulong src,
@@ -1460,7 +1461,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
toServer: true);
}
- public KernelResult CopyDataFromCurrentProcess(
+ public Result CopyDataFromCurrentProcess(
ulong dst,
ulong size,
MemoryState stateMask,
@@ -1483,7 +1484,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
toServer: false);
}
- private KernelResult CopyDataFromOrToCurrentProcess(
+ private Result CopyDataFromOrToCurrentProcess(
ulong size,
ulong clientAddress,
ulong serverAddress,
@@ -1543,7 +1544,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
size -= copySize;
}
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -1552,7 +1553,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult MapBufferFromClientProcess(
+ public Result MapBufferFromClientProcess(
ulong size,
ulong src,
KPageTableBase srcPageTable,
@@ -1567,14 +1568,14 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
lock (_blockManager)
{
- KernelResult result = srcPageTable.ReprotectClientProcess(
+ Result result = srcPageTable.ReprotectClientProcess(
src,
size,
permission,
state,
out int blocksNeeded);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -1590,7 +1591,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
result = MapPagesFromClientProcess(size, src, permission, state, srcPageTable, send, out ulong va);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
if (srcMapEndAddr > srcMapAddress)
{
@@ -1613,10 +1614,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- return KernelResult.Success;
+ return Result.Success;
}
- private KernelResult ReprotectClientProcess(
+ private Result ReprotectClientProcess(
ulong address,
ulong size,
KMemoryPermission permission,
@@ -1689,8 +1690,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong blockPagesCount = blockSize / PageSize;
- KernelResult reprotectResult = Reprotect(blockAddress, blockPagesCount, info.Permission);
- Debug.Assert(reprotectResult == KernelResult.Success);
+ Result reprotectResult = Reprotect(blockAddress, blockPagesCount, info.Permission);
+ Debug.Assert(reprotectResult == Result.Success);
}
}
}
@@ -1699,7 +1700,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
SignalMemoryTracking(addressTruncated, endAddrRounded - addressTruncated, false);
// Reprotect the aligned pages range on the client to make them inaccessible from the client process.
- KernelResult result;
+ Result result;
if (addressRounded < endAddrTruncated)
{
@@ -1736,7 +1737,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
result = Reprotect(blockAddress, blockPagesCount, permissionMask);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -1748,10 +1749,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- return KernelResult.Success;
+ return Result.Success;
}
- private KernelResult MapPagesFromClientProcess(
+ private Result MapPagesFromClientProcess(
ulong size,
ulong address,
KMemoryPermission permission,
@@ -1877,9 +1878,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
Context.Memory.Fill(GetDramAddressFromPa(firstPageFillAddress), unusedSizeAfter, (byte)_ipcFillValue);
}
- KernelResult result = MapPages(currentVa, 1, dstFirstPagePa, permission);
+ Result result = MapPages(currentVa, 1, dstFirstPagePa, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -1896,9 +1897,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
KPageList pageList = new KPageList();
srcPageTable.GetPhysicalRegions(addressRounded, alignedSize, pageList);
- KernelResult result = MapPages(currentVa, pageList, permission);
+ Result result = MapPages(currentVa, pageList, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -1931,9 +1932,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
Context.Memory.Fill(GetDramAddressFromPa(lastPageFillAddr), unusedSizeAfter, (byte)_ipcFillValue);
- KernelResult result = MapPages(currentVa, 1, dstLastPagePa, permission);
+ Result result = MapPages(currentVa, 1, dstLastPagePa, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
CleanUpForError();
@@ -1945,10 +1946,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
dst = va + (address - addressTruncated);
- return KernelResult.Success;
+ return Result.Success;
}
- public KernelResult UnmapNoAttributeIfStateEquals(ulong address, ulong size, MemoryState state)
+ public Result UnmapNoAttributeIfStateEquals(ulong address, ulong size, MemoryState state)
{
if (AddrSpaceStart > address)
{
@@ -1990,9 +1991,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong pagesCount = (endAddrRounded - addressTruncated) / PageSize;
- KernelResult result = Unmap(addressTruncated, pagesCount);
+ Result result = Unmap(addressTruncated, pagesCount);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_blockManager.InsertBlock(addressTruncated, pagesCount, MemoryState.Unmapped);
}
@@ -2006,7 +2007,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnmapIpcRestorePermission(ulong address, ulong size, MemoryState state)
+ public Result UnmapIpcRestorePermission(ulong address, ulong size, MemoryState state)
{
ulong endAddr = address + size;
@@ -2019,7 +2020,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (pagesCount == 0)
{
- return KernelResult.Success;
+ return Result.Success;
}
MemoryState stateMask;
@@ -2069,9 +2070,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong blockPagesCount = blockSize / PageSize;
- KernelResult result = Reprotect(blockAddress, blockPagesCount, info.SourcePermission);
+ Result result = Reprotect(blockAddress, blockPagesCount, info.SourcePermission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -2080,7 +2081,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(addressRounded, pagesCount, RestoreIpcMappingPermissions);
- return KernelResult.Success;
+ return Result.Success;
}
}
@@ -2094,7 +2095,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
block.RestoreIpcMappingPermission();
}
- public KernelResult GetPagesIfStateEquals(
+ public Result GetPagesIfStateEquals(
ulong address,
ulong size,
MemoryState stateMask,
@@ -2128,7 +2129,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
GetPhysicalRegions(address, size, pageList);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -2137,7 +2138,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult BorrowIpcBuffer(ulong address, ulong size)
+ public Result BorrowIpcBuffer(ulong address, ulong size)
{
return SetAttributesAndChangePermission(
address,
@@ -2152,7 +2153,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MemoryAttribute.Borrowed);
}
- public KernelResult BorrowTransferMemory(KPageList pageList, ulong address, ulong size, KMemoryPermission permission)
+ public Result BorrowTransferMemory(KPageList pageList, ulong address, ulong size, KMemoryPermission permission)
{
return SetAttributesAndChangePermission(
address,
@@ -2168,7 +2169,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
pageList);
}
- public KernelResult BorrowCodeMemory(KPageList pageList, ulong address, ulong size)
+ public Result BorrowCodeMemory(KPageList pageList, ulong address, ulong size)
{
return SetAttributesAndChangePermission(
address,
@@ -2184,7 +2185,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
pageList);
}
- private KernelResult SetAttributesAndChangePermission(
+ private Result SetAttributesAndChangePermission(
ulong address,
ulong size,
MemoryState stateMask,
@@ -2237,9 +2238,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (newPermission != oldPermission)
{
- KernelResult result = Reprotect(address, pagesCount, newPermission);
+ Result result = Reprotect(address, pagesCount, newPermission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -2249,7 +2250,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, oldState, newPermission, newAttribute);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -2258,7 +2259,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public KernelResult UnborrowIpcBuffer(ulong address, ulong size)
+ public Result UnborrowIpcBuffer(ulong address, ulong size)
{
return ClearAttributesAndChangePermission(
address,
@@ -2273,7 +2274,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MemoryAttribute.Borrowed);
}
- public KernelResult UnborrowTransferMemory(ulong address, ulong size, KPageList pageList)
+ public Result UnborrowTransferMemory(ulong address, ulong size, KPageList pageList)
{
return ClearAttributesAndChangePermission(
address,
@@ -2289,7 +2290,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
pageList);
}
- public KernelResult UnborrowCodeMemory(ulong address, ulong size, KPageList pageList)
+ public Result UnborrowCodeMemory(ulong address, ulong size, KPageList pageList)
{
return ClearAttributesAndChangePermission(
address,
@@ -2305,7 +2306,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
pageList);
}
- private KernelResult ClearAttributesAndChangePermission(
+ private Result ClearAttributesAndChangePermission(
ulong address,
ulong size,
MemoryState stateMask,
@@ -2365,9 +2366,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (newPermission != oldPermission)
{
- KernelResult result = Reprotect(address, pagesCount, newPermission);
+ Result result = Reprotect(address, pagesCount, newPermission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -2377,7 +2378,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_blockManager.InsertBlock(address, pagesCount, oldState, newPermission, newAttribute);
- return KernelResult.Success;
+ return Result.Success;
}
else
{
@@ -2915,7 +2916,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="oldSrcPermission">Current protection of the source memory region</param>
/// <param name="newDstPermission">Desired protection for the destination memory region</param>
/// <returns>Result of the mapping operation</returns>
- protected abstract KernelResult MapMemory(ulong src, ulong dst, ulong pagesCount, KMemoryPermission oldSrcPermission, KMemoryPermission newDstPermission);
+ protected abstract Result MapMemory(ulong src, ulong dst, ulong pagesCount, KMemoryPermission oldSrcPermission, KMemoryPermission newDstPermission);
/// <summary>
/// Unmaps a region of memory that was previously mapped with <see cref="MapMemory"/>.
@@ -2926,7 +2927,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="oldDstPermission">Current protection of the destination memory region</param>
/// <param name="newSrcPermission">Desired protection of the source memory region</param>
/// <returns>Result of the unmapping operation</returns>
- protected abstract KernelResult UnmapMemory(ulong dst, ulong src, ulong pagesCount, KMemoryPermission oldDstPermission, KMemoryPermission newSrcPermission);
+ protected abstract Result UnmapMemory(ulong dst, ulong src, ulong pagesCount, KMemoryPermission oldDstPermission, KMemoryPermission newSrcPermission);
/// <summary>
/// Maps a region of memory into the specified physical memory region.
@@ -2938,7 +2939,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="shouldFillPages">Indicate if the pages should be filled with the <paramref name="fillValue"/> value</param>
/// <param name="fillValue">The value used to fill pages when <paramref name="shouldFillPages"/> is set to true</param>
/// <returns>Result of the mapping operation</returns>
- protected abstract KernelResult MapPages(ulong dstVa, ulong pagesCount, ulong srcPa, KMemoryPermission permission, bool shouldFillPages = false, byte fillValue = 0);
+ protected abstract Result MapPages(ulong dstVa, ulong pagesCount, ulong srcPa, KMemoryPermission permission, bool shouldFillPages = false, byte fillValue = 0);
/// <summary>
/// Maps a region of memory into the specified physical memory region.
@@ -2949,7 +2950,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="shouldFillPages">Indicate if the pages should be filled with the <paramref name="fillValue"/> value</param>
/// <param name="fillValue">The value used to fill pages when <paramref name="shouldFillPages"/> is set to true</param>
/// <returns>Result of the mapping operation</returns>
- protected abstract KernelResult MapPages(ulong address, KPageList pageList, KMemoryPermission permission, bool shouldFillPages = false, byte fillValue = 0);
+ protected abstract Result MapPages(ulong address, KPageList pageList, KMemoryPermission permission, bool shouldFillPages = false, byte fillValue = 0);
/// <summary>
/// Unmaps a region of memory that was previously mapped with one of the page mapping methods.
@@ -2957,7 +2958,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="address">Virtual address of the region to unmap</param>
/// <param name="pagesCount">Number of pages to unmap</param>
/// <returns>Result of the unmapping operation</returns>
- protected abstract KernelResult Unmap(ulong address, ulong pagesCount);
+ protected abstract Result Unmap(ulong address, ulong pagesCount);
/// <summary>
/// Changes the permissions of a given virtual memory region.
@@ -2966,7 +2967,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="pagesCount">Number of pages to have their permissions changed</param>
/// <param name="permission">New permission</param>
/// <returns>Result of the permission change operation</returns>
- protected abstract KernelResult Reprotect(ulong address, ulong pagesCount, KMemoryPermission permission);
+ protected abstract Result Reprotect(ulong address, ulong pagesCount, KMemoryPermission permission);
/// <summary>
/// Changes the permissions of a given virtual memory region.
@@ -2975,7 +2976,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <param name="pagesCount">Number of pages to have their permissions changed</param>
/// <param name="permission">New permission</param>
/// <returns>Result of the permission change operation</returns>
- protected abstract KernelResult ReprotectWithAttributes(ulong address, ulong pagesCount, KMemoryPermission permission);
+ protected abstract Result ReprotectWithAttributes(ulong address, ulong pagesCount, KMemoryPermission permission);
/// <summary>
/// Alerts the memory tracking that a given region has been read from or written to.
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KSharedMemory.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KSharedMemory.cs
index 3af62750..2dbaf3cd 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KSharedMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KSharedMemory.cs
@@ -1,6 +1,7 @@
using Ryujinx.Common;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Process;
+using Ryujinx.Horizon.Common;
namespace Ryujinx.HLE.HOS.Kernel.Memory
{
@@ -26,7 +27,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_userPermission = userPermission;
}
- public KernelResult MapIntoProcess(
+ public Result MapIntoProcess(
KPageTableBase memoryManager,
ulong address,
ulong size,
@@ -50,7 +51,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return memoryManager.MapPages(address, _pageList, MemoryState.SharedMemory, permission);
}
- public KernelResult UnmapFromProcess(KPageTableBase memoryManager, ulong address, ulong size, KProcess process)
+ public Result UnmapFromProcess(KPageTableBase memoryManager, ulong address, ulong size, KProcess process)
{
if (_pageList.GetPagesCount() != BitUtils.DivRoundUp<ulong>(size, KPageTableBase.PageSize))
{
diff --git a/Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs b/Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs
index 2888efb8..b2449598 100644
--- a/Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs
@@ -1,6 +1,7 @@
using Ryujinx.Common;
using Ryujinx.HLE.HOS.Kernel.Common;
using Ryujinx.HLE.HOS.Kernel.Process;
+using Ryujinx.Horizon.Common;
using System;
namespace Ryujinx.HLE.HOS.Kernel.Memory
@@ -36,15 +37,15 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_isMapped = false;
}
- public KernelResult Initialize(ulong address, ulong size, KMemoryPermission permission)
+ public Result Initialize(ulong address, ulong size, KMemoryPermission permission)
{
KProcess creator = KernelStatic.GetCurrentProcess();
_creator = creator;
- KernelResult result = creator.MemoryManager.BorrowTransferMemory(_pageList, address, size, permission);
+ Result result = creator.MemoryManager.BorrowTransferMemory(_pageList, address, size, permission);
- if (result != KernelResult.Success)
+ if (result != Result.Success)
{
return result;
}
@@ -60,7 +61,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return result;
}
- public KernelResult MapIntoProcess(
+ public Result MapIntoProcess(
KPageTableBase memoryManager,
ulong address,
ulong size,
@@ -79,9 +80,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MemoryState state = Permission == KMemoryPermission.None ? MemoryState.TransferMemoryIsolated : MemoryState.TransferMemory;
- KernelResult result = memoryManager.MapPages(address, _pageList, state, KMemoryPermission.ReadAndWrite);
+ Result result = memoryManager.MapPages(address, _pageList, state, KMemoryPermission.ReadAndWrite);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_isMapped = true;
}
@@ -89,7 +90,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return result;
}
- public KernelResult UnmapFromProcess(
+ public Result UnmapFromProcess(
KPageTableBase memoryManager,
ulong address,
ulong size,
@@ -102,9 +103,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
MemoryState state = Permission == KMemoryPermission.None ? MemoryState.TransferMemoryIsolated : MemoryState.TransferMemory;
- KernelResult result = memoryManager.UnmapPages(address, _pageList, state);
+ Result result = memoryManager.UnmapPages(address, _pageList, state);
- if (result == KernelResult.Success)
+ if (result == Result.Success)
{
_isMapped = false;
}
@@ -116,7 +117,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
if (_hasBeenInitialized)
{
- if (!_isMapped && _creator.MemoryManager.UnborrowTransferMemory(Address, Size, _pageList) != KernelResult.Success)
+ if (!_isMapped && _creator.MemoryManager.UnborrowTransferMemory(Address, Size, _pageList) != Result.Success)
{
throw new InvalidOperationException("Unexpected failure restoring transfer memory attributes.");
}