aboutsummaryrefslogtreecommitdiff
path: root/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
diff options
context:
space:
mode:
authorTSRBerry <20988865+TSRBerry@users.noreply.github.com>2023-07-16 19:31:14 +0200
committerGitHub <noreply@github.com>2023-07-16 19:31:14 +0200
commit326749498bed4360e5a4b11fc67d5ec7cb9a3076 (patch)
treeae21fb26f99b401ca4e9efaab72b679a81c22369 /src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
parentfec8291c17fa106c28f58b56419e90d49a41a1ea (diff)
[Ryujinx.HLE] Address dotnet-format issues (#5380)
* dotnet format style --severity info Some changes were manually reverted. * dotnet format analyzers --serverity info Some changes have been minimally adapted. * Restore a few unused methods and variables * Silence dotnet format IDE0060 warnings * Silence dotnet format IDE0052 warnings * Address or silence dotnet format IDE1006 warnings * Address dotnet format CA1816 warnings * Address or silence dotnet format CA2208 warnings * Address or silence dotnet format CA1806 and a few CA1854 warnings * Address dotnet format CA2211 warnings * Address dotnet format CA1822 warnings * Address or silence dotnet format CA1069 warnings * Make dotnet format succeed in style mode * Address or silence dotnet format CA2211 warnings * Address review comments * Address dotnet format CA2208 warnings properly * Make ProcessResult readonly * Address most dotnet format whitespace warnings * Apply dotnet format whitespace formatting A few of them have been manually reverted and the corresponding warning was silenced * Add previously silenced warnings back I have no clue how these disappeared * Revert formatting changes for while and for-loops * Format if-blocks correctly * Run dotnet format style after rebase * Run dotnet format whitespace after rebase * Run dotnet format style after rebase * Run dotnet format analyzers after rebase * Run dotnet format after rebase and remove unused usings - analyzers - style - whitespace * Disable 'prefer switch expression' rule * Add comments to disabled warnings * Fix a few disabled warnings * Fix naming rule violation, Convert shader properties to auto-property and convert values to const * Simplify properties and array initialization, Use const when possible, Remove trailing commas * Start working on disabled warnings * Fix and silence a few dotnet-format warnings again * Run dotnet format after rebase * Use using declaration instead of block syntax * Address IDE0251 warnings * Address a few disabled IDE0060 warnings * Silence IDE0060 in .editorconfig * Revert "Simplify properties and array initialization, Use const when possible, Remove trailing commas" This reverts commit 9462e4136c0a2100dc28b20cf9542e06790aa67e. * dotnet format whitespace after rebase * First dotnet format pass * Fix naming rule violations * Fix typo * Add trailing commas, use targeted new and use array initializer * Fix build issues * Fix remaining build issues * Remove SuppressMessage for CA1069 where possible * Address dotnet format issues * Address formatting issues Co-authored-by: Ac_K <acoustik666@gmail.com> * Add GetHashCode implementation for RenderingSurfaceInfo * Explicitly silence CA1822 for every affected method in Syscall * Address formatting issues in Demangler.cs * Address review feedback Co-authored-by: Ac_K <acoustik666@gmail.com> * Revert marking service methods as static * Next dotnet format pass * Address review feedback --------- Co-authored-by: Ac_K <acoustik666@gmail.com>
Diffstat (limited to 'src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs')
-rw-r--r--src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs90
1 files changed, 50 insertions, 40 deletions
diff --git a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
index 6746a0a7..2b00f802 100644
--- a/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
+++ b/src/Ryujinx.HLE/HOS/Kernel/Memory/KPageTableBase.cs
@@ -12,14 +12,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
abstract class KPageTableBase
{
- private static readonly int[] MappingUnitSizes = new int[]
- {
+ private static readonly int[] _mappingUnitSizes = {
0x1000,
0x10000,
0x200000,
0x400000,
0x2000000,
- 0x40000000
+ 0x40000000,
};
private const ulong RegionAlignment = 0x200000;
@@ -58,7 +57,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
public ulong AslrRegionStart { get; private set; }
public ulong AslrRegionEnd { get; private set; }
+#pragma warning disable IDE0052 // Remove unread private member
private ulong _heapCapacity;
+#pragma warning restore IDE0052
public ulong PhysicalMemoryUsage { get; private set; }
@@ -67,7 +68,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
private MemoryRegion _memRegion;
private bool _allocateFromBack;
- private bool _isKernel;
+ private readonly bool _isKernel;
private bool _aslrEnabled;
@@ -77,10 +78,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
private MersenneTwister _randomNumberGenerator;
- private MemoryFillValue _heapFillValue;
- private MemoryFillValue _ipcFillValue;
+ private readonly MemoryFillValue _heapFillValue;
+ private readonly MemoryFillValue _ipcFillValue;
- private ulong _reservedAddressSpaceSize;
+ private readonly ulong _reservedAddressSpaceSize;
public KPageTableBase(KernelContext context, ulong reservedAddressSpaceSize)
{
@@ -96,7 +97,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
_reservedAddressSpaceSize = reservedAddressSpaceSize;
}
- private static readonly int[] AddrSpaceSizes = new int[] { 32, 36, 32, 39 };
+ private static readonly int[] _addrSpaceSizes = { 32, 36, 32, 39 };
public Result InitializeForProcess(
AddressSpaceType addrSpaceType,
@@ -109,13 +110,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
if ((uint)addrSpaceType > (uint)AddressSpaceType.Addr39Bits)
{
- throw new ArgumentException(nameof(addrSpaceType));
+ throw new ArgumentException($"AddressSpaceType bigger than {(uint)AddressSpaceType.Addr39Bits}: {(uint)addrSpaceType}", nameof(addrSpaceType));
}
_contextId = Context.ContextIdManager.GetId();
ulong addrSpaceBase = 0;
- ulong addrSpaceSize = 1UL << AddrSpaceSizes[(int)addrSpaceType];
+ ulong addrSpaceSize = 1UL << _addrSpaceSizes[(int)addrSpaceType];
Result result = CreateUserAddressSpace(
addrSpaceType,
@@ -157,10 +158,10 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
{
ulong endAddr = address + size;
- Region aliasRegion = new Region();
- Region heapRegion = new Region();
- Region stackRegion = new Region();
- Region tlsIoRegion = new Region();
+ Region aliasRegion = new();
+ Region heapRegion = new();
+ Region stackRegion = new();
+ Region tlsIoRegion = new();
ulong codeRegionSize;
ulong stackAndTlsIoStart;
@@ -238,8 +239,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
stackAndTlsIoEnd = 0;
}
break;
-
- default: throw new ArgumentException(nameof(addrSpaceType));
+ default:
+ throw new ArgumentException($"AddressSpaceType bigger than {(uint)AddressSpaceType.Addr39Bits}: {(uint)addrSpaceType}", nameof(addrSpaceType));
}
CodeRegionEnd = CodeRegionStart + codeRegionSize;
@@ -374,10 +375,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
private long GetRandomValue(long min, long max)
{
- if (_randomNumberGenerator == null)
- {
- _randomNumberGenerator = new MersenneTwister(0);
- }
+ _randomNumberGenerator ??= new MersenneTwister(0);
return _randomNumberGenerator.GenRandomNumber(min, max);
}
@@ -442,7 +440,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
lock (_blockManager)
{
- KPageList currentPageList = new KPageList();
+ KPageList currentPageList = new();
GetPhysicalRegions(address, size, currentPageList);
@@ -486,13 +484,13 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
}
}
- public Result MapNormalMemory(long address, long size, KMemoryPermission permission)
+ public static Result MapNormalMemory(long address, long size, KMemoryPermission permission)
{
// TODO.
return Result.Success;
}
- public Result MapIoMemory(long address, long size, KMemoryPermission permission)
+ public static Result MapIoMemory(long address, long size, KMemoryPermission permission)
{
// TODO.
return Result.Success;
@@ -1174,8 +1172,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
return KernelResult.InvalidMemState;
}
- KPageList srcPageList = new KPageList();
- KPageList dstPageList = new KPageList();
+ KPageList srcPageList = new();
+ KPageList dstPageList = new();
srcPageTable.GetPhysicalRegions(src, size, srcPageList);
GetPhysicalRegions(dst, size, dstPageList);
@@ -1681,11 +1679,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
switch (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;
}
KMemoryPermission permissionMask = permission == KMemoryPermission.ReadAndWrite
@@ -1822,9 +1826,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
ulong va = 0;
- for (int unit = MappingUnitSizes.Length - 1; unit >= 0 && va == 0; unit--)
+ for (int unit = _mappingUnitSizes.Length - 1; unit >= 0 && va == 0; unit--)
{
- int alignment = MappingUnitSizes[unit];
+ int alignment = _mappingUnitSizes[unit];
va = AllocateVa(AliasRegionStart, regionPagesCount, neededPagesCount, alignment);
}
@@ -1937,7 +1941,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (srcPageTable.Supports4KBPages)
{
- KPageList pageList = new KPageList();
+ KPageList pageList = new();
srcPageTable.GetPhysicalRegions(addressRounded, alignedSize, pageList);
result = MapPages(currentVa, pageList, permission, MemoryMapFlags.None);
@@ -2075,11 +2079,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
switch (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 =
@@ -2392,7 +2402,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
if (pageList != null)
{
- KPageList currentPageList = new KPageList();
+ KPageList currentPageList = new();
GetPhysicalRegions(address, pagesCount * PageSize, currentPageList);
@@ -3050,4 +3060,4 @@ namespace Ryujinx.HLE.HOS.Kernel.Memory
/// <exception cref="Ryujinx.Memory.InvalidMemoryRegionException">Throw for unhandled invalid or unmapped memory accesses</exception>
protected abstract void Write(ulong va, ReadOnlySpan<byte> data);
}
-} \ No newline at end of file
+}