From 08831eecf77cedd3c4192ebab5a9c485fb15d51e Mon Sep 17 00:00:00 2001 From: gdkchan <gab.dark.100@gmail.com> 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 --- .../HOS/Kernel/Process/KProcessCapabilities.cs | 23 +++++++++++----------- 1 file changed, 12 insertions(+), 11 deletions(-) (limited to 'Ryujinx.HLE/HOS/Kernel/Process/KProcessCapabilities.cs') diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcessCapabilities.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcessCapabilities.cs index a08c4b26..ef55a165 100644 --- a/Ryujinx.HLE/HOS/Kernel/Process/KProcessCapabilities.cs +++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcessCapabilities.cs @@ -1,6 +1,7 @@ using Ryujinx.HLE.HOS.Kernel.Common; using Ryujinx.HLE.HOS.Kernel.Memory; using Ryujinx.HLE.HOS.Kernel.Threading; +using Ryujinx.Horizon.Common; using System; using System.Numerics; @@ -25,7 +26,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process IrqAccessMask = new byte[0x80]; } - public KernelResult InitializeForKernel(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) + public Result InitializeForKernel(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) { AllowedCpuCoresMask = 0xf; AllowedThreadPriosMask = ulong.MaxValue; @@ -35,12 +36,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Process return Parse(capabilities, memoryManager); } - public KernelResult InitializeForUser(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) + public Result InitializeForUser(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) { return Parse(capabilities, memoryManager); } - private KernelResult Parse(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) + private Result Parse(ReadOnlySpan<int> capabilities, KPageTableBase memoryManager) { int mask0 = 0; int mask1 = 0; @@ -51,9 +52,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Process if (((cap + 1) & ~cap) != 0x40) { - KernelResult result = ParseCapability(cap, ref mask0, ref mask1, memoryManager); + Result result = ParseCapability(cap, ref mask0, ref mask1, memoryManager); - if (result != KernelResult.Success) + if (result != Result.Success) { return result; } @@ -96,7 +97,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process ? KMemoryPermission.Read : KMemoryPermission.ReadAndWrite; - KernelResult result; + Result result; if ((cap >> 31) != 0) { @@ -107,17 +108,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Process result = memoryManager.MapIoMemory(address, size, perm); } - if (result != KernelResult.Success) + if (result != Result.Success) { return result; } } } - return KernelResult.Success; + return Result.Success; } - private KernelResult ParseCapability(int cap, ref int mask0, ref int mask1, KPageTableBase memoryManager) + private Result ParseCapability(int cap, ref int mask0, ref int mask1, KPageTableBase memoryManager) { int code = (cap + 1) & ~cap; @@ -127,7 +128,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process } else if (code == 0) { - return KernelResult.Success; + return Result.Success; } int codeMask = 1 << (32 - BitOperations.LeadingZeroCount((uint)code + 1)); @@ -300,7 +301,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Process default: return KernelResult.InvalidCapability; } - return KernelResult.Success; + return Result.Success; } private static ulong GetMaskFromMinMax(int min, int max) -- cgit v1.2.3-70-g09d2