From 08831eecf77cedd3c4192ebab5a9c485fb15d51e Mon Sep 17 00:00:00 2001 From: gdkchan Date: Wed, 4 Jan 2023 19:15:45 -0300 Subject: IPC refactor part 3+4: New server HIPC message processor (#4188) * IPC refactor part 3 + 4: New server HIPC message processor with source generator based serialization * Make types match on calls to AlignUp/AlignDown * Formatting * Address some PR feedback * Move BitfieldExtensions to Ryujinx.Common.Utilities and consolidate implementations * Rename Reader/Writer to SpanReader/SpanWriter and move to Ryujinx.Common.Memory * Implement EventType * Address more PR feedback * Log request processing errors since they are not normal * Rename waitable to multiwait and add missing lock * PR feedback * Ac_K PR feedback --- Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'Ryujinx.HLE/HOS/Kernel/Memory/KTransferMemory.cs') 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."); } -- cgit v1.2.3