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/Ipc/KBufferDescriptorTable.cs       | 62 +++++++++++-----------
 1 file changed, 31 insertions(+), 31 deletions(-)

(limited to 'Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs')

diff --git a/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs b/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
index 5726299b..593d2c9d 100644
--- a/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
@@ -1,6 +1,6 @@
 using Ryujinx.Common;
-using Ryujinx.HLE.HOS.Kernel.Common;
 using Ryujinx.HLE.HOS.Kernel.Memory;
+using Ryujinx.Horizon.Common;
 using System.Collections.Generic;
 
 namespace Ryujinx.HLE.HOS.Kernel.Ipc
@@ -20,38 +20,38 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
             _exchangeBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
         }
 
-        public KernelResult AddSendBuffer(ulong src, ulong dst, ulong size, MemoryState state)
+        public Result AddSendBuffer(ulong src, ulong dst, ulong size, MemoryState state)
         {
             return Add(_sendBufferDescriptors, src, dst, size, state);
         }
 
-        public KernelResult AddReceiveBuffer(ulong src, ulong dst, ulong size, MemoryState state)
+        public Result AddReceiveBuffer(ulong src, ulong dst, ulong size, MemoryState state)
         {
             return Add(_receiveBufferDescriptors, src, dst, size, state);
         }
 
-        public KernelResult AddExchangeBuffer(ulong src, ulong dst, ulong size, MemoryState state)
+        public Result AddExchangeBuffer(ulong src, ulong dst, ulong size, MemoryState state)
         {
             return Add(_exchangeBufferDescriptors, src, dst, size, state);
         }
 
-        private KernelResult Add(List<KBufferDescriptor> list, ulong src, ulong dst, ulong size, MemoryState state)
+        private Result Add(List<KBufferDescriptor> list, ulong src, ulong dst, ulong size, MemoryState state)
         {
             if (list.Count < MaxInternalBuffersCount)
             {
                 list.Add(new KBufferDescriptor(src, dst, size, state));
 
-                return KernelResult.Success;
+                return Result.Success;
             }
 
             return KernelResult.OutOfMemory;
         }
 
-        public KernelResult CopyBuffersToClient(KPageTableBase memoryManager)
+        public Result CopyBuffersToClient(KPageTableBase memoryManager)
         {
-            KernelResult result = CopyToClient(memoryManager, _receiveBufferDescriptors);
+            Result result = CopyToClient(memoryManager, _receiveBufferDescriptors);
 
-            if (result != KernelResult.Success)
+            if (result != Result.Success)
             {
                 return result;
             }
@@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
             return CopyToClient(memoryManager, _exchangeBufferDescriptors);
         }
 
-        private KernelResult CopyToClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+        private Result CopyToClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
         {
             foreach (KBufferDescriptor desc in list)
             {
@@ -94,7 +94,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
                         copySize = desc.Size;
                     }
 
-                    KernelResult result = memoryManager.CopyDataFromCurrentProcess(
+                    Result result = memoryManager.CopyDataFromCurrentProcess(
                         desc.ClientAddress,
                         copySize,
                         stateMask,
@@ -104,7 +104,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
                         MemoryAttribute.None,
                         desc.ServerAddress);
 
-                    if (result != KernelResult.Success)
+                    if (result != Result.Success)
                     {
                         return result;
                     }
@@ -120,7 +120,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
                 if (clientEndAddrTruncated < clientEndAddrRounded &&
                     (clientAddrTruncated == clientAddrRounded || clientAddrTruncated < clientEndAddrTruncated))
                 {
-                    KernelResult result = memoryManager.CopyDataFromCurrentProcess(
+                    Result result = memoryManager.CopyDataFromCurrentProcess(
                         clientEndAddrTruncated,
                         clientEndAddr - clientEndAddrTruncated,
                         stateMask,
@@ -130,28 +130,28 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
                         MemoryAttribute.None,
                         serverEndAddrTruncated);
 
-                    if (result != KernelResult.Success)
+                    if (result != Result.Success)
                     {
                         return result;
                     }
                 }
             }
 
-            return KernelResult.Success;
+            return Result.Success;
         }
 
-        public KernelResult UnmapServerBuffers(KPageTableBase memoryManager)
+        public Result UnmapServerBuffers(KPageTableBase memoryManager)
         {
-            KernelResult result = UnmapServer(memoryManager, _sendBufferDescriptors);
+            Result result = UnmapServer(memoryManager, _sendBufferDescriptors);
 
-            if (result != KernelResult.Success)
+            if (result != Result.Success)
             {
                 return result;
             }
 
             result = UnmapServer(memoryManager, _receiveBufferDescriptors);
 
-            if (result != KernelResult.Success)
+            if (result != Result.Success)
             {
                 return result;
             }
@@ -159,36 +159,36 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
             return UnmapServer(memoryManager, _exchangeBufferDescriptors);
         }
 
-        private KernelResult UnmapServer(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+        private Result UnmapServer(KPageTableBase memoryManager, List<KBufferDescriptor> list)
         {
             foreach (KBufferDescriptor descriptor in list)
             {
-                KernelResult result = memoryManager.UnmapNoAttributeIfStateEquals(
+                Result result = memoryManager.UnmapNoAttributeIfStateEquals(
                     descriptor.ServerAddress,
                     descriptor.Size,
                     descriptor.State);
 
-                if (result != KernelResult.Success)
+                if (result != Result.Success)
                 {
                     return result;
                 }
             }
 
-            return KernelResult.Success;
+            return Result.Success;
         }
 
-        public KernelResult RestoreClientBuffers(KPageTableBase memoryManager)
+        public Result RestoreClientBuffers(KPageTableBase memoryManager)
         {
-            KernelResult result = RestoreClient(memoryManager, _sendBufferDescriptors);
+            Result result = RestoreClient(memoryManager, _sendBufferDescriptors);
 
-            if (result != KernelResult.Success)
+            if (result != Result.Success)
             {
                 return result;
             }
 
             result = RestoreClient(memoryManager, _receiveBufferDescriptors);
 
-            if (result != KernelResult.Success)
+            if (result != Result.Success)
             {
                 return result;
             }
@@ -196,22 +196,22 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
             return RestoreClient(memoryManager, _exchangeBufferDescriptors);
         }
 
-        private KernelResult RestoreClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+        private Result RestoreClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
         {
             foreach (KBufferDescriptor descriptor in list)
             {
-                KernelResult result = memoryManager.UnmapIpcRestorePermission(
+                Result result = memoryManager.UnmapIpcRestorePermission(
                     descriptor.ClientAddress,
                     descriptor.Size,
                     descriptor.State);
 
-                if (result != KernelResult.Success)
+                if (result != Result.Success)
                 {
                     return result;
                 }
             }
 
-            return KernelResult.Success;
+            return Result.Success;
         }
     }
 }
\ No newline at end of file
-- 
cgit v1.2.3-70-g09d2