aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Kernel/Ipc
diff options
context:
space:
mode:
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Kernel/Ipc')
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/ChannelState.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptor.cs14
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs40
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientPort.cs10
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientSession.cs12
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightClientSession.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightServerSession.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightSession.cs2
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs8
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerPort.cs6
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerSession.cs147
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KSession.cs4
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Ipc/KSessionRequest.cs12
13 files changed, 140 insertions, 127 deletions
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/ChannelState.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/ChannelState.cs
index 4827384e..3a943f94 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/ChannelState.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/ChannelState.cs
@@ -5,6 +5,6 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
NotInitialized,
Open,
ClientDisconnected,
- ServerDisconnected
+ ServerDisconnected,
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptor.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptor.cs
index e28244d4..5fa9cbe7 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptor.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptor.cs
@@ -4,17 +4,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
class KBufferDescriptor
{
- public ulong ClientAddress { get; }
- public ulong ServerAddress { get; }
- public ulong Size { get; }
- public MemoryState State { get; }
+ public ulong ClientAddress { get; }
+ public ulong ServerAddress { get; }
+ public ulong Size { get; }
+ public MemoryState State { get; }
public KBufferDescriptor(ulong src, ulong dst, ulong size, MemoryState state)
{
ClientAddress = src;
ServerAddress = dst;
- Size = size;
- State = state;
+ Size = size;
+ State = state;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
index 593d2c9d..373899b7 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KBufferDescriptorTable.cs
@@ -9,14 +9,14 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
private const int MaxInternalBuffersCount = 8;
- private List<KBufferDescriptor> _sendBufferDescriptors;
- private List<KBufferDescriptor> _receiveBufferDescriptors;
- private List<KBufferDescriptor> _exchangeBufferDescriptors;
+ private readonly List<KBufferDescriptor> _sendBufferDescriptors;
+ private readonly List<KBufferDescriptor> _receiveBufferDescriptors;
+ private readonly List<KBufferDescriptor> _exchangeBufferDescriptors;
public KBufferDescriptorTable()
{
- _sendBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
- _receiveBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
+ _sendBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
+ _receiveBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
_exchangeBufferDescriptors = new List<KBufferDescriptor>(MaxInternalBuffersCount);
}
@@ -35,7 +35,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return Add(_exchangeBufferDescriptors, src, dst, size, state);
}
- private Result Add(List<KBufferDescriptor> list, ulong src, ulong dst, ulong size, MemoryState state)
+ private static Result Add(List<KBufferDescriptor> list, ulong src, ulong dst, ulong size, MemoryState state)
{
if (list.Count < MaxInternalBuffersCount)
{
@@ -59,7 +59,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return CopyToClient(memoryManager, _exchangeBufferDescriptors);
}
- private Result CopyToClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+ private static Result CopyToClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
{
foreach (KBufferDescriptor desc in list)
{
@@ -67,11 +67,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
switch (desc.State)
{
- case MemoryState.IpcBuffer0: stateMask = MemoryState.IpcSendAllowedType0; break;
- case MemoryState.IpcBuffer1: stateMask = MemoryState.IpcSendAllowedType1; break;
- case MemoryState.IpcBuffer3: stateMask = MemoryState.IpcSendAllowedType3; break;
-
- default: return KernelResult.InvalidCombination;
+ case MemoryState.IpcBuffer0:
+ stateMask = MemoryState.IpcSendAllowedType0;
+ break;
+ case MemoryState.IpcBuffer1:
+ stateMask = MemoryState.IpcSendAllowedType1;
+ break;
+ case MemoryState.IpcBuffer3:
+ stateMask = MemoryState.IpcSendAllowedType3;
+ break;
+ default:
+ return KernelResult.InvalidCombination;
}
MemoryAttribute attributeMask = MemoryAttribute.Borrowed | MemoryAttribute.Uncached;
@@ -82,7 +88,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
ulong clientAddrTruncated = BitUtils.AlignDown<ulong>(desc.ClientAddress, KPageTableBase.PageSize);
- ulong clientAddrRounded = BitUtils.AlignUp<ulong>(desc.ClientAddress, KPageTableBase.PageSize);
+ ulong clientAddrRounded = BitUtils.AlignUp<ulong>(desc.ClientAddress, KPageTableBase.PageSize);
// Check if address is not aligned, in this case we need to perform 2 copies.
if (clientAddrTruncated != clientAddrRounded)
@@ -114,7 +120,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
ulong serverEndAddr = desc.ServerAddress + desc.Size;
ulong clientEndAddrTruncated = BitUtils.AlignDown<ulong>(clientEndAddr, (ulong)KPageTableBase.PageSize);
- ulong clientEndAddrRounded = BitUtils.AlignUp<ulong>(clientEndAddr, KPageTableBase.PageSize);
+ ulong clientEndAddrRounded = BitUtils.AlignUp<ulong>(clientEndAddr, KPageTableBase.PageSize);
ulong serverEndAddrTruncated = BitUtils.AlignDown<ulong>(serverEndAddr, (ulong)KPageTableBase.PageSize);
if (clientEndAddrTruncated < clientEndAddrRounded &&
@@ -159,7 +165,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return UnmapServer(memoryManager, _exchangeBufferDescriptors);
}
- private Result UnmapServer(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+ private static Result UnmapServer(KPageTableBase memoryManager, List<KBufferDescriptor> list)
{
foreach (KBufferDescriptor descriptor in list)
{
@@ -196,7 +202,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return RestoreClient(memoryManager, _exchangeBufferDescriptors);
}
- private Result RestoreClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
+ private static Result RestoreClient(KPageTableBase memoryManager, List<KBufferDescriptor> list)
{
foreach (KBufferDescriptor descriptor in list)
{
@@ -214,4 +220,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return Result.Success;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientPort.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientPort.cs
index eb7c5a41..6355fb6e 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientPort.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientPort.cs
@@ -17,7 +17,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public KClientPort(KernelContext context, KPort parent, int maxSessions) : base(context)
{
_maxSessions = maxSessions;
- _parent = parent;
+ _parent = parent;
}
public Result Connect(out KClientSession clientSession)
@@ -39,7 +39,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return KernelResult.SessionCountExceeded;
}
- KSession session = new KSession(KernelContext, this);
+ KSession session = new(KernelContext, this);
Result result = _parent.EnqueueIncomingSession(session.ServerSession);
@@ -75,7 +75,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return KernelResult.SessionCountExceeded;
}
- KLightSession session = new KLightSession(KernelContext);
+ KLightSession session = new(KernelContext);
Result result = _parent.EnqueueIncomingLightSession(session.ServerSession);
@@ -133,7 +133,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
KAutoObject foundObj = FindNamedObject(context, name);
- if (!(foundObj is KClientPort))
+ if (foundObj is not KClientPort)
{
return KernelResult.NotFound;
}
@@ -141,4 +141,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return KAutoObject.RemoveName(context, name);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientSession.cs
index a24bcc31..385f0902 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KClientSession.cs
@@ -9,7 +9,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
public KProcess CreatorProcess { get; }
- private KSession _parent;
+ private readonly KSession _parent;
public ChannelState State { get; set; }
@@ -17,7 +17,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public KClientSession(KernelContext context, KSession parent, KClientPort parentPort) : base(context)
{
- _parent = parent;
+ _parent = parent;
ParentPort = parentPort;
parentPort?.IncrementReferenceCount();
@@ -32,11 +32,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
KThread currentThread = KernelStatic.GetCurrentThread();
- KSessionRequest request = new KSessionRequest(currentThread, customCmdBuffAddr, customCmdBuffSize);
+ KSessionRequest request = new(currentThread, customCmdBuffAddr, customCmdBuffSize);
KernelContext.CriticalSection.Enter();
- currentThread.SignaledObj = null;
+ currentThread.SignaledObj = null;
currentThread.ObjSyncResult = Result.Success;
Result result = _parent.ServerSession.EnqueueRequest(request);
@@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
KThread currentThread = KernelStatic.GetCurrentThread();
- KSessionRequest request = new KSessionRequest(currentThread, customCmdBuffAddr, customCmdBuffSize, asyncEvent);
+ KSessionRequest request = new(currentThread, customCmdBuffAddr, customCmdBuffSize, asyncEvent);
KernelContext.CriticalSection.Enter();
@@ -81,4 +81,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
_parent.DecrementReferenceCount();
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightClientSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightClientSession.cs
index 27a9732b..1ff37282 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightClientSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightClientSession.cs
@@ -4,11 +4,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
class KLightClientSession : KAutoObject
{
+#pragma warning disable IDE0052 // Remove unread private member
private readonly KLightSession _parent;
+#pragma warning restore IDE0052
public KLightClientSession(KernelContext context, KLightSession parent) : base(context)
{
_parent = parent;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightServerSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightServerSession.cs
index 0edbba6c..c355409e 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightServerSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightServerSession.cs
@@ -4,11 +4,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
class KLightServerSession : KAutoObject
{
+#pragma warning disable IDE0052 // Remove unread private member
private readonly KLightSession _parent;
+#pragma warning restore IDE0052
public KLightServerSession(KernelContext context, KLightSession parent) : base(context)
{
_parent = parent;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightSession.cs
index 3abb1ab0..16158a70 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KLightSession.cs
@@ -13,4 +13,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
ClientSession = new KLightClientSession(context, this);
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs
index 93f0f34c..84ebcbc3 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KPort.cs
@@ -8,9 +8,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public KServerPort ServerPort { get; }
public KClientPort ClientPort { get; }
- private string _name;
+#pragma warning disable IDE0052 // Remove unread private member
+ private readonly string _name;
+#pragma warning restore IDE0052
- private ChannelState _state;
+ private readonly ChannelState _state;
public bool IsLight { get; private set; }
@@ -69,4 +71,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return result;
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerPort.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerPort.cs
index 21a3919c..08efa8d9 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerPort.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerPort.cs
@@ -5,7 +5,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
class KServerPort : KSynchronizationObject
{
- private readonly LinkedList<KServerSession> _incomingConnections;
+ private readonly LinkedList<KServerSession> _incomingConnections;
private readonly LinkedList<KLightServerSession> _lightIncomingConnections;
private readonly KPort _parent;
@@ -16,7 +16,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
_parent = parent;
- _incomingConnections = new LinkedList<KServerSession>();
+ _incomingConnections = new LinkedList<KServerSession>();
_lightIncomingConnections = new LinkedList<KLightServerSession>();
}
@@ -84,4 +84,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerSession.cs
index 86469c03..7e41a3f3 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KServerSession.cs
@@ -10,19 +10,18 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
class KServerSession : KSynchronizationObject
{
- private static readonly MemoryState[] IpcMemoryStates = new MemoryState[]
- {
+ private static readonly MemoryState[] _ipcMemoryStates = {
MemoryState.IpcBuffer3,
MemoryState.IpcBuffer0,
MemoryState.IpcBuffer1,
- (MemoryState)0xfffce5d4 //This is invalid, shouldn't be accessed.
+ (MemoryState)0xfffce5d4, //This is invalid, shouldn't be accessed.
};
private readonly struct Message
{
- public ulong Address { get; }
- public ulong Size { get; }
- public bool IsCustom { get; }
+ public ulong Address { get; }
+ public ulong Size { get; }
+ public bool IsCustom { get; }
public Message(KThread thread, ulong customCmdBuffAddress, ulong customCmdBuffSize)
{
@@ -31,19 +30,20 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
if (IsCustom)
{
Address = customCmdBuffAddress;
- Size = customCmdBuffSize;
+ Size = customCmdBuffSize;
}
else
{
Address = thread.TlsAddress;
- Size = 0x100;
+ Size = 0x100;
}
}
public Message(KSessionRequest request) : this(
request.ClientThread,
request.CustomCmdBuffAddr,
- request.CustomCmdBuffSize) { }
+ request.CustomCmdBuffSize)
+ { }
}
private readonly struct MessageHeader
@@ -52,18 +52,18 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public uint Word1 { get; }
public uint Word2 { get; }
- public uint PointerBuffersCount { get; }
- public uint SendBuffersCount { get; }
- public uint ReceiveBuffersCount { get; }
+ public uint PointerBuffersCount { get; }
+ public uint SendBuffersCount { get; }
+ public uint ReceiveBuffersCount { get; }
public uint ExchangeBuffersCount { get; }
public uint RawDataSizeInWords { get; }
public uint ReceiveListType { get; }
- public uint MessageSizeInWords { get; }
+ public uint MessageSizeInWords { get; }
public uint ReceiveListOffsetInWords { get; }
- public uint ReceiveListOffset { get; }
+ public uint ReceiveListOffset { get; }
public bool HasHandles { get; }
@@ -101,14 +101,14 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
MoveHandlesCount = 0;
}
- PointerBuffersCount = (word0 >> 16) & 0xf;
- SendBuffersCount = (word0 >> 20) & 0xf;
- ReceiveBuffersCount = (word0 >> 24) & 0xf;
- ExchangeBuffersCount = word0 >> 28;
+ PointerBuffersCount = (word0 >> 16) & 0xf;
+ SendBuffersCount = (word0 >> 20) & 0xf;
+ ReceiveBuffersCount = (word0 >> 24) & 0xf;
+ ExchangeBuffersCount = word0 >> 28;
- uint pointerDescSizeInWords = PointerBuffersCount * 2;
- uint sendDescSizeInWords = SendBuffersCount * 3;
- uint receiveDescSizeInWords = ReceiveBuffersCount * 3;
+ uint pointerDescSizeInWords = PointerBuffersCount * 2;
+ uint sendDescSizeInWords = SendBuffersCount * 3;
+ uint receiveDescSizeInWords = ReceiveBuffersCount * 3;
uint exchangeDescSizeInWords = ExchangeBuffersCount * 3;
RawDataSizeInWords = word1 & 0x3ff;
@@ -119,12 +119,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
uint paddingSizeInWords = HasHandles ? 3u : 2u;
- MessageSizeInWords = pointerDescSizeInWords +
- sendDescSizeInWords +
- receiveDescSizeInWords +
+ MessageSizeInWords = pointerDescSizeInWords +
+ sendDescSizeInWords +
+ receiveDescSizeInWords +
exchangeDescSizeInWords +
- RawDataSizeInWords +
- paddingSizeInWords +
+ RawDataSizeInWords +
+ paddingSizeInWords +
handleDescSizeInWords;
if (ReceiveListOffsetInWords == 0)
@@ -140,25 +140,25 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
public uint ReceiveIndex { get; }
- public uint BufferSize { get; }
+ public uint BufferSize { get; }
public ulong BufferAddress { get; set; }
public PointerBufferDesc(ulong dword)
{
ReceiveIndex = (uint)dword & 0xf;
- BufferSize = (uint)dword >> 16;
+ BufferSize = (uint)dword >> 16;
- BufferAddress = (dword >> 2) & 0x70;
+ BufferAddress = (dword >> 2) & 0x70;
BufferAddress |= (dword >> 12) & 0xf;
BufferAddress = (BufferAddress << 32) | (dword >> 32);
}
- public ulong Pack()
+ public readonly ulong Pack()
{
ulong dword = (ReceiveIndex & 0xf) | ((BufferSize & 0xffff) << 16);
- dword |= BufferAddress << 32;
+ dword |= BufferAddress << 32;
dword |= (BufferAddress >> 20) & 0xf000;
dword |= (BufferAddress >> 30) & 0xffc0;
@@ -166,9 +166,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
- private KSession _parent;
+ private readonly KSession _parent;
- private LinkedList<KSessionRequest> _requests;
+ private readonly LinkedList<KSessionRequest> _requests;
private KSessionRequest _activeRequest;
@@ -208,7 +208,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public Result Receive(ulong customCmdBuffAddr = 0, ulong customCmdBuffSize = 0)
{
- KThread serverThread = KernelStatic.GetCurrentThread();
+ KThread serverThread = KernelStatic.GetCurrentThread();
KProcess serverProcess = serverThread.Owner;
KernelContext.CriticalSection.Enter();
@@ -234,7 +234,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return KernelResult.PortRemoteClosed;
}
- KThread clientThread = request.ClientThread;
+ KThread clientThread = request.ClientThread;
KProcess clientProcess = clientThread.Owner;
KernelContext.CriticalSection.Leave();
@@ -243,8 +243,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
request.ServerProcess = serverProcess;
- Message clientMsg = new Message(request);
- Message serverMsg = new Message(serverThread, customCmdBuffAddr, customCmdBuffSize);
+ Message clientMsg = new(request);
+ Message serverMsg = new(serverThread, customCmdBuffAddr, customCmdBuffSize);
MessageHeader clientHeader = GetClientMessageHeader(clientProcess, clientMsg);
MessageHeader serverHeader = GetServerMessageHeader(serverMsg);
@@ -399,7 +399,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
ulong pointerDesc = clientProcess.CpuMemory.Read<ulong>(clientMsg.Address + offset * 4);
- PointerBufferDesc descriptor = new PointerBufferDesc(pointerDesc);
+ PointerBufferDesc descriptor = new(pointerDesc);
if (descriptor.BufferSize != 0)
{
@@ -409,7 +409,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
serverHeader.ReceiveListType,
clientHeader.MessageSizeInWords,
receiveList,
- ref recvListDstOffset,
+ ref recvListDstOffset,
out ulong recvListBufferAddress);
if (clientResult != Result.Success)
@@ -450,7 +450,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
// Copy send, receive and exchange buffers.
uint totalBuffersCount =
- clientHeader.SendBuffersCount +
+ clientHeader.SendBuffersCount +
clientHeader.ReceiveBuffersCount +
clientHeader.ExchangeBuffersCount;
@@ -462,11 +462,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
uint descWord1 = clientProcess.CpuMemory.Read<uint>(clientDescAddress + 4);
uint descWord2 = clientProcess.CpuMemory.Read<uint>(clientDescAddress + 8);
- bool isSendDesc = index < clientHeader.SendBuffersCount;
+ bool isSendDesc = index < clientHeader.SendBuffersCount;
bool isExchangeDesc = index >= clientHeader.SendBuffersCount + clientHeader.ReceiveBuffersCount;
bool notReceiveDesc = isSendDesc || isExchangeDesc;
- bool isReceiveDesc = !notReceiveDesc;
+ bool isReceiveDesc = !notReceiveDesc;
KMemoryPermission permission = index >= clientHeader.SendBuffersCount
? KMemoryPermission.ReadAndWrite
@@ -482,12 +482,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
ulong bufferAddress;
- bufferAddress = descWord2 >> 28;
+ bufferAddress = descWord2 >> 28;
bufferAddress |= ((descWord2 >> 2) & 7) << 4;
bufferAddress = (bufferAddress << 32) | descWord1;
- MemoryState state = IpcMemoryStates[(descWord2 + 1) & 3];
+ MemoryState state = _ipcMemoryStates[(descWord2 + 1) & 3];
clientResult = serverProcess.MemoryManager.MapBufferFromClientProcess(
bufferSize,
@@ -533,7 +533,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
descWord2 |= sizeHigh4 << 24;
descWord2 |= (uint)(dstAddress >> 34) & 0x3ffffffc;
- descWord2 |= (uint)(dstAddress >> 4) & 0xf0000000;
+ descWord2 |= (uint)(dstAddress >> 4) & 0xf0000000;
ulong serverDescAddress = serverMsg.Address + offset * 4;
@@ -586,7 +586,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public Result Reply(ulong customCmdBuffAddr = 0, ulong customCmdBuffSize = 0)
{
- KThread serverThread = KernelStatic.GetCurrentThread();
+ KThread serverThread = KernelStatic.GetCurrentThread();
KProcess serverProcess = serverThread.Owner;
KernelContext.CriticalSection.Enter();
@@ -609,11 +609,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
KernelContext.CriticalSection.Leave();
- KThread clientThread = request.ClientThread;
+ KThread clientThread = request.ClientThread;
KProcess clientProcess = clientThread.Owner;
- Message clientMsg = new Message(request);
- Message serverMsg = new Message(serverThread, customCmdBuffAddr, customCmdBuffSize);
+ Message clientMsg = new(request);
+ Message serverMsg = new(serverThread, customCmdBuffAddr, customCmdBuffSize);
MessageHeader clientHeader = GetClientMessageHeader(clientProcess, clientMsg);
MessageHeader serverHeader = GetServerMessageHeader(serverMsg);
@@ -664,8 +664,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return KernelResult.CmdBufferTooSmall;
}
- if (serverHeader.SendBuffersCount != 0 ||
- serverHeader.ReceiveBuffersCount != 0 ||
+ if (serverHeader.SendBuffersCount != 0 ||
+ serverHeader.ReceiveBuffersCount != 0 ||
serverHeader.ExchangeBuffersCount != 0)
{
CleanUpForError();
@@ -761,7 +761,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
{
ulong pointerDesc = serverProcess.CpuMemory.Read<ulong>(serverMsg.Address + offset * 4);
- PointerBufferDesc descriptor = new PointerBufferDesc(pointerDesc);
+ PointerBufferDesc descriptor = new(pointerDesc);
ulong recvListBufferAddress = 0;
@@ -817,7 +817,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
// Set send, receive and exchange buffer descriptors to zero.
uint totalBuffersCount =
- serverHeader.SendBuffersCount +
+ serverHeader.SendBuffersCount +
serverHeader.ReceiveBuffersCount +
serverHeader.ExchangeBuffersCount;
@@ -868,7 +868,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return serverResult;
}
- private MessageHeader GetClientMessageHeader(KProcess clientProcess, Message clientMsg)
+ private static MessageHeader GetClientMessageHeader(KProcess clientProcess, Message clientMsg)
{
uint word0 = clientProcess.CpuMemory.Read<uint>(clientMsg.Address + 0);
uint word1 = clientProcess.CpuMemory.Read<uint>(clientMsg.Address + 4);
@@ -877,7 +877,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return new MessageHeader(word0, word1, word2);
}
- private MessageHeader GetServerMessageHeader(Message serverMsg)
+ private static MessageHeader GetServerMessageHeader(Message serverMsg)
{
KProcess currentProcess = KernelStatic.GetCurrentProcess();
@@ -888,7 +888,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return new MessageHeader(word0, word1, word2);
}
- private Result GetCopyObjectHandle(KThread srcThread, KProcess dstProcess, int srcHandle, out int dstHandle)
+ private static Result GetCopyObjectHandle(KThread srcThread, KProcess dstProcess, int srcHandle, out int dstHandle)
{
dstHandle = 0;
@@ -919,7 +919,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
- private Result GetMoveObjectHandle(KProcess srcProcess, KProcess dstProcess, int srcHandle, out int dstHandle)
+ private static Result GetMoveObjectHandle(KProcess srcProcess, KProcess dstProcess, int srcHandle, out int dstHandle)
{
dstHandle = 0;
@@ -939,7 +939,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
- private ulong[] GetReceiveList(KProcess ownerProcess, Message message, uint recvListType, uint recvListOffset)
+ private static ulong[] GetReceiveList(KProcess ownerProcess, Message message, uint recvListType, uint recvListOffset)
{
int recvListSize = 0;
@@ -964,16 +964,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return receiveList;
}
- private Result GetReceiveListAddress(
+ private static Result GetReceiveListAddress(
PointerBufferDesc descriptor,
- Message message,
- uint recvListType,
- uint messageSizeInWords,
- ulong[] receiveList,
- ref uint dstOffset,
- out ulong address)
+ Message message,
+ uint recvListType,
+ uint messageSizeInWords,
+ ulong[] receiveList,
+ ref uint dstOffset,
+ out ulong address)
{
- ulong recvListBufferAddress = address = 0;
+ ulong recvListBufferAddress;
+ address = 0;
if (recvListType == 0)
{
@@ -987,7 +988,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
if (recvListType == 1)
{
recvListBaseAddr = message.Address + messageSizeInWords * 4;
- recvListEndAddr = message.Address + message.Size;
+ recvListEndAddr = message.Address + message.Size;
}
else /* if (recvListType == 2) */
{
@@ -1012,7 +1013,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
dstOffset = (uint)endAddress - (uint)recvListBaseAddr;
if (recvListBufferAddress + descriptor.BufferSize <= recvListBufferAddress ||
- recvListBufferAddress + descriptor.BufferSize > recvListEndAddr)
+ recvListBufferAddress + descriptor.BufferSize > recvListEndAddr)
{
return KernelResult.OutOfResource;
}
@@ -1041,7 +1042,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
return Result.Success;
}
- private void CloseAllHandles(Message message, MessageHeader header, KProcess process)
+ private static void CloseAllHandles(Message message, MessageHeader header, KProcess process)
{
if (header.HasHandles)
{
@@ -1202,7 +1203,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
- private void SendResultToAsyncRequestClient(KSessionRequest request, Result result)
+ private static void SendResultToAsyncRequestClient(KSessionRequest request, Result result)
{
KProcess clientProcess = request.ClientThread.Owner;
@@ -1232,15 +1233,15 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
KernelContext.CriticalSection.Leave();
}
- private void WakeAndSetResult(KThread thread, Result result, KSynchronizationObject signaledObj = null)
+ private static void WakeAndSetResult(KThread thread, Result result, KSynchronizationObject signaledObj = null)
{
if ((thread.SchedFlags & ThreadSchedState.LowMask) == ThreadSchedState.Paused)
{
- thread.SignaledObj = signaledObj;
+ thread.SignaledObj = signaledObj;
thread.ObjSyncResult = result;
thread.Reschedule(ThreadSchedState.Running);
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSession.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSession.cs
index 13cf4b51..6659d414 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSession.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSession.cs
@@ -8,7 +8,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public KServerSession ServerSession { get; }
public KClientSession ClientSession { get; }
- private bool _hasBeenInitialized;
+ private readonly bool _hasBeenInitialized;
public KSession(KernelContext context, KClientPort parentPort = null) : base(context)
{
@@ -51,4 +51,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
}
}
}
-} \ No newline at end of file
+}
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSessionRequest.cs b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSessionRequest.cs
index 31ddfc9c..bc3eef71 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSessionRequest.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Ipc/KSessionRequest.cs
@@ -17,17 +17,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
public ulong CustomCmdBuffSize { get; }
public KSessionRequest(
- KThread clientThread,
- ulong customCmdBuffAddr,
- ulong customCmdBuffSize,
+ KThread clientThread,
+ ulong customCmdBuffAddr,
+ ulong customCmdBuffSize,
KWritableEvent asyncEvent = null)
{
- ClientThread = clientThread;
+ ClientThread = clientThread;
CustomCmdBuffAddr = customCmdBuffAddr;
CustomCmdBuffSize = customCmdBuffSize;
- AsyncEvent = asyncEvent;
+ AsyncEvent = asyncEvent;
BufferDescriptorTable = new KBufferDescriptorTable();
}
}
-} \ No newline at end of file
+}