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/Ipc/KPort.cs | 21 +++++++++++---------- 1 file changed, 11 insertions(+), 10 deletions(-) (limited to 'Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs') diff --git a/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs b/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs index 2f67aeae..93f0f34c 100644 --- a/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs +++ b/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs @@ -1,4 +1,5 @@ using Ryujinx.HLE.HOS.Kernel.Common; +using Ryujinx.Horizon.Common; namespace Ryujinx.HLE.HOS.Kernel.Ipc { @@ -7,26 +8,26 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc public KServerPort ServerPort { get; } public KClientPort ClientPort { get; } - private long _nameAddress; + private string _name; private ChannelState _state; public bool IsLight { get; private set; } - public KPort(KernelContext context, int maxSessions, bool isLight, long nameAddress) : base(context) + public KPort(KernelContext context, int maxSessions, bool isLight, string name) : base(context) { ServerPort = new KServerPort(context, this); ClientPort = new KClientPort(context, this, maxSessions); - IsLight = isLight; - _nameAddress = nameAddress; + IsLight = isLight; + _name = name; _state = ChannelState.Open; } - public KernelResult EnqueueIncomingSession(KServerSession session) + public Result EnqueueIncomingSession(KServerSession session) { - KernelResult result; + Result result; KernelContext.CriticalSection.Enter(); @@ -34,7 +35,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc { ServerPort.EnqueueIncomingSession(session); - result = KernelResult.Success; + result = Result.Success; } else { @@ -46,9 +47,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc return result; } - public KernelResult EnqueueIncomingLightSession(KLightServerSession session) + public Result EnqueueIncomingLightSession(KLightServerSession session) { - KernelResult result; + Result result; KernelContext.CriticalSection.Enter(); @@ -56,7 +57,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc { ServerPort.EnqueueIncomingLightSession(session); - result = KernelResult.Success; + result = Result.Success; } else { -- cgit v1.2.3