diff options
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs | 261 |
1 files changed, 131 insertions, 130 deletions
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. |