aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2018-12-04 22:52:39 -0200
committerGitHub <noreply@github.com>2018-12-04 22:52:39 -0200
commit3615a70cae3f89197fe185dfc5d0a47fa42151d9 (patch)
tree8e4737422fba15199c1a6ce7c6345996c0e907b5 /Ryujinx.HLE/HOS/Kernel
parent85dbb9559ad317a657dafd24da27fec4b3f5250f (diff)
Revert "Adjust naming conventions and general refactoring in HLE Project (#490)" (#526)
This reverts commit 85dbb9559ad317a657dafd24da27fec4b3f5250f.
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs38
-rw-r--r--Ryujinx.HLE/HOS/Kernel/HleProcessDebugger.cs226
-rw-r--r--Ryujinx.HLE/HOS/Kernel/HleScheduler.cs76
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KAddressArbiter.cs504
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KAutoObject.cs18
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KClientPort.cs24
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KConditionVariable.cs56
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KContextIdManager.cs52
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KCoreContext.cs30
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KCriticalSection.cs50
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KEvent.cs8
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KHandleEntry.cs6
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KHandleTable.cs158
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryArrange.cs24
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryArrangeRegion.cs10
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryBlock.cs24
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryBlockAllocator.cs10
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryInfo.cs42
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs1854
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryRegionBlock.cs18
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KMemoryRegionManager.cs330
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KPageList.cs42
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KPageNode.cs6
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KPort.cs22
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KProcess.cs660
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KProcessCapabilities.cs166
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KReadableEvent.cs28
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KResourceLimit.cs114
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KScheduler.cs122
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSchedulingData.cs162
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KServerPort.cs8
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSession.cs16
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSharedMemory.cs62
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSlabHeap.cs32
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSynchronization.cs108
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KSynchronizationObject.cs10
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KThread.cs488
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KTimeManager.cs94
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KTlsPageInfo.cs48
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KTlsPageManager.cs42
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KTransferMemory.cs10
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KWritableEvent.cs10
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KernelInit.cs118
-rw-r--r--Ryujinx.HLE/HOS/Kernel/KernelTransfer.cs44
-rw-r--r--Ryujinx.HLE/HOS/Kernel/MersenneTwister.cs106
-rw-r--r--Ryujinx.HLE/HOS/Kernel/ProcessCreationInfo.cs48
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SvcHandler.cs58
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SvcMemory.cs470
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SvcSystem.cs632
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SvcThread.cs464
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SvcThreadSync.cs310
51 files changed, 4029 insertions, 4029 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs b/Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs
index cfcda87b..6a424cf2 100644
--- a/Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/HleCoreManager.cs
@@ -7,7 +7,7 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private class PausableThread
{
- public ManualResetEvent Event { get; }
+ public ManualResetEvent Event { get; private set; }
public bool IsExiting { get; set; }
@@ -17,49 +17,49 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- private ConcurrentDictionary<Thread, PausableThread> _threads;
+ private ConcurrentDictionary<Thread, PausableThread> Threads;
public HleCoreManager()
{
- _threads = new ConcurrentDictionary<Thread, PausableThread>();
+ Threads = new ConcurrentDictionary<Thread, PausableThread>();
}
- public void Set(Thread thread)
+ public void Set(Thread Thread)
{
- GetThread(thread).Event.Set();
+ GetThread(Thread).Event.Set();
}
- public void Reset(Thread thread)
+ public void Reset(Thread Thread)
{
- GetThread(thread).Event.Reset();
+ GetThread(Thread).Event.Reset();
}
- public void Wait(Thread thread)
+ public void Wait(Thread Thread)
{
- PausableThread pausableThread = GetThread(thread);
+ PausableThread PausableThread = GetThread(Thread);
- if (!pausableThread.IsExiting)
+ if (!PausableThread.IsExiting)
{
- pausableThread.Event.WaitOne();
+ PausableThread.Event.WaitOne();
}
}
- public void Exit(Thread thread)
+ public void Exit(Thread Thread)
{
- GetThread(thread).IsExiting = true;
+ GetThread(Thread).IsExiting = true;
}
- private PausableThread GetThread(Thread thread)
+ private PausableThread GetThread(Thread Thread)
{
- return _threads.GetOrAdd(thread, (key) => new PausableThread());
+ return Threads.GetOrAdd(Thread, (Key) => new PausableThread());
}
- public void RemoveThread(Thread thread)
+ public void RemoveThread(Thread Thread)
{
- if (_threads.TryRemove(thread, out PausableThread pausableThread))
+ if (Threads.TryRemove(Thread, out PausableThread PausableThread))
{
- pausableThread.Event.Set();
- pausableThread.Event.Dispose();
+ PausableThread.Event.Set();
+ PausableThread.Event.Dispose();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/HleProcessDebugger.cs b/Ryujinx.HLE/HOS/Kernel/HleProcessDebugger.cs
index 9ef4ca8f..a6053b1b 100644
--- a/Ryujinx.HLE/HOS/Kernel/HleProcessDebugger.cs
+++ b/Ryujinx.HLE/HOS/Kernel/HleProcessDebugger.cs
@@ -14,138 +14,138 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int Mod0 = 'M' << 0 | 'O' << 8 | 'D' << 16 | '0' << 24;
- private KProcess _owner;
+ private KProcess Owner;
private class Image
{
- public long BaseAddress { get; }
+ public long BaseAddress { get; private set; }
- public ElfSymbol[] Symbols { get; }
+ public ElfSymbol[] Symbols { get; private set; }
- public Image(long baseAddress, ElfSymbol[] symbols)
+ public Image(long BaseAddress, ElfSymbol[] Symbols)
{
- BaseAddress = baseAddress;
- Symbols = symbols;
+ this.BaseAddress = BaseAddress;
+ this.Symbols = Symbols;
}
}
- private List<Image> _images;
+ private List<Image> Images;
- private int _loaded;
+ private int Loaded;
- public HleProcessDebugger(KProcess owner)
+ public HleProcessDebugger(KProcess Owner)
{
- _owner = owner;
+ this.Owner = Owner;
- _images = new List<Image>();
+ Images = new List<Image>();
}
- public void PrintGuestStackTrace(CpuThreadState threadState)
+ public void PrintGuestStackTrace(CpuThreadState ThreadState)
{
EnsureLoaded();
- StringBuilder trace = new StringBuilder();
+ StringBuilder Trace = new StringBuilder();
- trace.AppendLine("Guest stack trace:");
+ Trace.AppendLine("Guest stack trace:");
- void AppendTrace(long address)
+ void AppendTrace(long Address)
{
- Image image = GetImage(address, out int imageIndex);
+ Image Image = GetImage(Address, out int ImageIndex);
- if (image == null || !TryGetSubName(image, address, out string subName))
+ if (Image == null || !TryGetSubName(Image, Address, out string SubName))
{
- subName = $"Sub{address:x16}";
+ SubName = $"Sub{Address:x16}";
}
- else if (subName.StartsWith("_Z"))
+ else if (SubName.StartsWith("_Z"))
{
- subName = Demangler.Parse(subName);
+ SubName = Demangler.Parse(SubName);
}
- if (image != null)
+ if (Image != null)
{
- long offset = address - image.BaseAddress;
+ long Offset = Address - Image.BaseAddress;
- string imageName = GetGuessedNsoNameFromIndex(imageIndex);
+ string ImageName = GetGuessedNsoNameFromIndex(ImageIndex);
- string imageNameAndOffset = $"[{_owner.Name}] {imageName}:0x{offset:x8}";
+ string ImageNameAndOffset = $"[{Owner.Name}] {ImageName}:0x{Offset:x8}";
- trace.AppendLine($" {imageNameAndOffset} {subName}");
+ Trace.AppendLine($" {ImageNameAndOffset} {SubName}");
}
else
{
- trace.AppendLine($" [{_owner.Name}] ??? {subName}");
+ Trace.AppendLine($" [{Owner.Name}] ??? {SubName}");
}
}
- long framePointer = (long)threadState.X29;
+ long FramePointer = (long)ThreadState.X29;
- while (framePointer != 0)
+ while (FramePointer != 0)
{
- if ((framePointer & 7) != 0 ||
- !_owner.CpuMemory.IsMapped(framePointer) ||
- !_owner.CpuMemory.IsMapped(framePointer + 8))
+ if ((FramePointer & 7) != 0 ||
+ !Owner.CpuMemory.IsMapped(FramePointer) ||
+ !Owner.CpuMemory.IsMapped(FramePointer + 8))
{
break;
}
//Note: This is the return address, we need to subtract one instruction
//worth of bytes to get the branch instruction address.
- AppendTrace(_owner.CpuMemory.ReadInt64(framePointer + 8) - 4);
+ AppendTrace(Owner.CpuMemory.ReadInt64(FramePointer + 8) - 4);
- framePointer = _owner.CpuMemory.ReadInt64(framePointer);
+ FramePointer = Owner.CpuMemory.ReadInt64(FramePointer);
}
- Logger.PrintInfo(LogClass.Cpu, trace.ToString());
+ Logger.PrintInfo(LogClass.Cpu, Trace.ToString());
}
- private bool TryGetSubName(Image image, long address, out string name)
+ private bool TryGetSubName(Image Image, long Address, out string Name)
{
- address -= image.BaseAddress;
+ Address -= Image.BaseAddress;
- int left = 0;
- int right = image.Symbols.Length - 1;
+ int Left = 0;
+ int Right = Image.Symbols.Length - 1;
- while (left <= right)
+ while (Left <= Right)
{
- int size = right - left;
+ int Size = Right - Left;
- int middle = left + (size >> 1);
+ int Middle = Left + (Size >> 1);
- ElfSymbol symbol = image.Symbols[middle];
+ ElfSymbol Symbol = Image.Symbols[Middle];
- long endAddr = symbol.Value + symbol.Size;
+ long EndAddr = Symbol.Value + Symbol.Size;
- if ((ulong)address >= (ulong)symbol.Value && (ulong)address < (ulong)endAddr)
+ if ((ulong)Address >= (ulong)Symbol.Value && (ulong)Address < (ulong)EndAddr)
{
- name = symbol.Name;
+ Name = Symbol.Name;
return true;
}
- if ((ulong)address < (ulong)symbol.Value)
+ if ((ulong)Address < (ulong)Symbol.Value)
{
- right = middle - 1;
+ Right = Middle - 1;
}
else
{
- left = middle + 1;
+ Left = Middle + 1;
}
}
- name = null;
+ Name = null;
return false;
}
- private Image GetImage(long address, out int index)
+ private Image GetImage(long Address, out int Index)
{
- lock (_images)
+ lock (Images)
{
- for (index = _images.Count - 1; index >= 0; index--)
+ for (Index = Images.Count - 1; Index >= 0; Index--)
{
- if ((ulong)address >= (ulong)_images[index].BaseAddress)
+ if ((ulong)Address >= (ulong)Images[Index].BaseAddress)
{
- return _images[index];
+ return Images[Index];
}
}
}
@@ -153,42 +153,42 @@ namespace Ryujinx.HLE.HOS.Kernel
return null;
}
- private string GetGuessedNsoNameFromIndex(int index)
+ private string GetGuessedNsoNameFromIndex(int Index)
{
- if ((uint)index > 11)
+ if ((uint)Index > 11)
{
return "???";
}
- if (index == 0)
+ if (Index == 0)
{
return "rtld";
}
- else if (index == 1)
+ else if (Index == 1)
{
return "main";
}
- else if (index == GetImagesCount() - 1)
+ else if (Index == GetImagesCount() - 1)
{
return "sdk";
}
else
{
- return "subsdk" + (index - 2);
+ return "subsdk" + (Index - 2);
}
}
private int GetImagesCount()
{
- lock (_images)
+ lock (Images)
{
- return _images.Count;
+ return Images.Count;
}
}
private void EnsureLoaded()
{
- if (Interlocked.CompareExchange(ref _loaded, 1, 0) == 0)
+ if (Interlocked.CompareExchange(ref Loaded, 1, 0) == 0)
{
ScanMemoryForTextSegments();
}
@@ -196,115 +196,115 @@ namespace Ryujinx.HLE.HOS.Kernel
private void ScanMemoryForTextSegments()
{
- ulong oldAddress = 0;
- ulong address = 0;
+ ulong OldAddress = 0;
+ ulong Address = 0;
- while (address >= oldAddress)
+ while (Address >= OldAddress)
{
- KMemoryInfo info = _owner.MemoryManager.QueryMemory(address);
+ KMemoryInfo Info = Owner.MemoryManager.QueryMemory(Address);
- if (info.State == MemoryState.Reserved)
+ if (Info.State == MemoryState.Reserved)
{
break;
}
- if (info.State == MemoryState.CodeStatic && info.Permission == MemoryPermission.ReadAndExecute)
+ if (Info.State == MemoryState.CodeStatic && Info.Permission == MemoryPermission.ReadAndExecute)
{
- LoadMod0Symbols(_owner.CpuMemory, (long)info.Address);
+ LoadMod0Symbols(Owner.CpuMemory, (long)Info.Address);
}
- oldAddress = address;
+ OldAddress = Address;
- address = info.Address + info.Size;
+ Address = Info.Address + Info.Size;
}
}
- private void LoadMod0Symbols(MemoryManager memory, long textOffset)
+ private void LoadMod0Symbols(MemoryManager Memory, long TextOffset)
{
- long mod0Offset = textOffset + memory.ReadUInt32(textOffset + 4);
+ long Mod0Offset = TextOffset + Memory.ReadUInt32(TextOffset + 4);
- if (mod0Offset < textOffset || !memory.IsMapped(mod0Offset) || (mod0Offset & 3) != 0)
+ if (Mod0Offset < TextOffset || !Memory.IsMapped(Mod0Offset) || (Mod0Offset & 3) != 0)
{
return;
}
- Dictionary<ElfDynamicTag, long> dynamic = new Dictionary<ElfDynamicTag, long>();
+ Dictionary<ElfDynamicTag, long> Dynamic = new Dictionary<ElfDynamicTag, long>();
- int mod0Magic = memory.ReadInt32(mod0Offset + 0x0);
+ int Mod0Magic = Memory.ReadInt32(Mod0Offset + 0x0);
- if (mod0Magic != Mod0)
+ if (Mod0Magic != Mod0)
{
return;
}
- long dynamicOffset = memory.ReadInt32(mod0Offset + 0x4) + mod0Offset;
- long bssStartOffset = memory.ReadInt32(mod0Offset + 0x8) + mod0Offset;
- long bssEndOffset = memory.ReadInt32(mod0Offset + 0xc) + mod0Offset;
- long ehHdrStartOffset = memory.ReadInt32(mod0Offset + 0x10) + mod0Offset;
- long ehHdrEndOffset = memory.ReadInt32(mod0Offset + 0x14) + mod0Offset;
- long modObjOffset = memory.ReadInt32(mod0Offset + 0x18) + mod0Offset;
+ long DynamicOffset = Memory.ReadInt32(Mod0Offset + 0x4) + Mod0Offset;
+ long BssStartOffset = Memory.ReadInt32(Mod0Offset + 0x8) + Mod0Offset;
+ long BssEndOffset = Memory.ReadInt32(Mod0Offset + 0xc) + Mod0Offset;
+ long EhHdrStartOffset = Memory.ReadInt32(Mod0Offset + 0x10) + Mod0Offset;
+ long EhHdrEndOffset = Memory.ReadInt32(Mod0Offset + 0x14) + Mod0Offset;
+ long ModObjOffset = Memory.ReadInt32(Mod0Offset + 0x18) + Mod0Offset;
while (true)
{
- long tagVal = memory.ReadInt64(dynamicOffset + 0);
- long value = memory.ReadInt64(dynamicOffset + 8);
+ long TagVal = Memory.ReadInt64(DynamicOffset + 0);
+ long Value = Memory.ReadInt64(DynamicOffset + 8);
- dynamicOffset += 0x10;
+ DynamicOffset += 0x10;
- ElfDynamicTag tag = (ElfDynamicTag)tagVal;
+ ElfDynamicTag Tag = (ElfDynamicTag)TagVal;
- if (tag == ElfDynamicTag.DT_NULL)
+ if (Tag == ElfDynamicTag.DT_NULL)
{
break;
}
- dynamic[tag] = value;
+ Dynamic[Tag] = Value;
}
- if (!dynamic.TryGetValue(ElfDynamicTag.DT_STRTAB, out long strTab) ||
- !dynamic.TryGetValue(ElfDynamicTag.DT_SYMTAB, out long symTab) ||
- !dynamic.TryGetValue(ElfDynamicTag.DT_SYMENT, out long symEntSize))
+ if (!Dynamic.TryGetValue(ElfDynamicTag.DT_STRTAB, out long StrTab) ||
+ !Dynamic.TryGetValue(ElfDynamicTag.DT_SYMTAB, out long SymTab) ||
+ !Dynamic.TryGetValue(ElfDynamicTag.DT_SYMENT, out long SymEntSize))
{
return;
}
- long strTblAddr = textOffset + strTab;
- long symTblAddr = textOffset + symTab;
+ long StrTblAddr = TextOffset + StrTab;
+ long SymTblAddr = TextOffset + SymTab;
- List<ElfSymbol> symbols = new List<ElfSymbol>();
+ List<ElfSymbol> Symbols = new List<ElfSymbol>();
- while ((ulong)symTblAddr < (ulong)strTblAddr)
+ while ((ulong)SymTblAddr < (ulong)StrTblAddr)
{
- ElfSymbol sym = GetSymbol(memory, symTblAddr, strTblAddr);
+ ElfSymbol Sym = GetSymbol(Memory, SymTblAddr, StrTblAddr);
- symbols.Add(sym);
+ Symbols.Add(Sym);
- symTblAddr += symEntSize;
+ SymTblAddr += SymEntSize;
}
- lock (_images)
+ lock (Images)
{
- _images.Add(new Image(textOffset, symbols.OrderBy(x => x.Value).ToArray()));
+ Images.Add(new Image(TextOffset, Symbols.OrderBy(x => x.Value).ToArray()));
}
}
- private ElfSymbol GetSymbol(MemoryManager memory, long address, long strTblAddr)
+ private ElfSymbol GetSymbol(MemoryManager Memory, long Address, long StrTblAddr)
{
- int nameIndex = memory.ReadInt32(address + 0);
- int info = memory.ReadByte (address + 4);
- int other = memory.ReadByte (address + 5);
- int shIdx = memory.ReadInt16(address + 6);
- long value = memory.ReadInt64(address + 8);
- long size = memory.ReadInt64(address + 16);
+ int NameIndex = Memory.ReadInt32(Address + 0);
+ int Info = Memory.ReadByte (Address + 4);
+ int Other = Memory.ReadByte (Address + 5);
+ int SHIdx = Memory.ReadInt16(Address + 6);
+ long Value = Memory.ReadInt64(Address + 8);
+ long Size = Memory.ReadInt64(Address + 16);
- string name = string.Empty;
+ string Name = string.Empty;
- for (int chr; (chr = memory.ReadByte(strTblAddr + nameIndex++)) != 0;)
+ for (int Chr; (Chr = Memory.ReadByte(StrTblAddr + NameIndex++)) != 0;)
{
- name += (char)chr;
+ Name += (char)Chr;
}
- return new ElfSymbol(name, info, other, shIdx, value, size);
+ return new ElfSymbol(Name, Info, Other, SHIdx, Value, Size);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/HleScheduler.cs b/Ryujinx.HLE/HOS/Kernel/HleScheduler.cs
index 4afc48ba..87dbe553 100644
--- a/Ryujinx.HLE/HOS/Kernel/HleScheduler.cs
+++ b/Ryujinx.HLE/HOS/Kernel/HleScheduler.cs
@@ -7,21 +7,21 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int RoundRobinTimeQuantumMs = 10;
- private int _currentCore;
+ private int CurrentCore;
public bool MultiCoreScheduling { get; set; }
- public HleCoreManager CoreManager { get; }
+ public HleCoreManager CoreManager { get; private set; }
- private bool _keepPreempting;
+ private bool KeepPreempting;
public void StartAutoPreemptionThread()
{
- Thread preemptionThread = new Thread(PreemptCurrentThread);
+ Thread PreemptionThread = new Thread(PreemptCurrentThread);
- _keepPreempting = true;
+ KeepPreempting = true;
- preemptionThread.Start();
+ PreemptionThread.Start();
}
public void ContextSwitch()
@@ -30,28 +30,28 @@ namespace Ryujinx.HLE.HOS.Kernel
{
if (MultiCoreScheduling)
{
- int selectedCount = 0;
+ int SelectedCount = 0;
- for (int core = 0; core < CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- KCoreContext coreContext = CoreContexts[core];
+ KCoreContext CoreContext = CoreContexts[Core];
- if (coreContext.ContextSwitchNeeded && (coreContext.CurrentThread?.Context.IsCurrentThread() ?? false))
+ if (CoreContext.ContextSwitchNeeded && (CoreContext.CurrentThread?.Context.IsCurrentThread() ?? false))
{
- coreContext.ContextSwitch();
+ CoreContext.ContextSwitch();
}
- if (coreContext.CurrentThread?.Context.IsCurrentThread() ?? false)
+ if (CoreContext.CurrentThread?.Context.IsCurrentThread() ?? false)
{
- selectedCount++;
+ SelectedCount++;
}
}
- if (selectedCount == 0)
+ if (SelectedCount == 0)
{
CoreManager.Reset(Thread.CurrentThread);
}
- else if (selectedCount == 1)
+ else if (SelectedCount == 1)
{
CoreManager.Set(Thread.CurrentThread);
}
@@ -62,41 +62,41 @@ namespace Ryujinx.HLE.HOS.Kernel
}
else
{
- KThread currentThread = CoreContexts[_currentCore].CurrentThread;
+ KThread CurrentThread = CoreContexts[CurrentCore].CurrentThread;
- bool hasThreadExecuting = currentThread != null;
+ bool HasThreadExecuting = CurrentThread != null;
- if (hasThreadExecuting)
+ if (HasThreadExecuting)
{
//If this is not the thread that is currently executing, we need
//to request an interrupt to allow safely starting another thread.
- if (!currentThread.Context.IsCurrentThread())
+ if (!CurrentThread.Context.IsCurrentThread())
{
- currentThread.Context.RequestInterrupt();
+ CurrentThread.Context.RequestInterrupt();
return;
}
- CoreManager.Reset(currentThread.Context.Work);
+ CoreManager.Reset(CurrentThread.Context.Work);
}
//Advance current core and try picking a thread,
//keep advancing if it is null.
- for (int core = 0; core < 4; core++)
+ for (int Core = 0; Core < 4; Core++)
{
- _currentCore = (_currentCore + 1) % CpuCoresCount;
+ CurrentCore = (CurrentCore + 1) % CpuCoresCount;
- KCoreContext coreContext = CoreContexts[_currentCore];
+ KCoreContext CoreContext = CoreContexts[CurrentCore];
- coreContext.UpdateCurrentThread();
+ CoreContext.UpdateCurrentThread();
- if (coreContext.CurrentThread != null)
+ if (CoreContext.CurrentThread != null)
{
- coreContext.CurrentThread.ClearExclusive();
+ CoreContext.CurrentThread.ClearExclusive();
- CoreManager.Set(coreContext.CurrentThread.Context.Work);
+ CoreManager.Set(CoreContext.CurrentThread.Context.Work);
- coreContext.CurrentThread.Context.Execute();
+ CoreContext.CurrentThread.Context.Execute();
break;
}
@@ -104,7 +104,7 @@ namespace Ryujinx.HLE.HOS.Kernel
//If nothing was running before, then we are on a "external"
//HLE thread, we don't need to wait.
- if (!hasThreadExecuting)
+ if (!HasThreadExecuting)
{
return;
}
@@ -119,13 +119,13 @@ namespace Ryujinx.HLE.HOS.Kernel
//Preempts current thread every 10 milliseconds on a round-robin fashion,
//when multi core scheduling is disabled, to try ensuring that all threads
//gets a chance to run.
- while (_keepPreempting)
+ while (KeepPreempting)
{
lock (CoreContexts)
{
- KThread currentThread = CoreContexts[_currentCore].CurrentThread;
+ KThread CurrentThread = CoreContexts[CurrentCore].CurrentThread;
- currentThread?.Context.RequestInterrupt();
+ CurrentThread?.Context.RequestInterrupt();
}
PreemptThreads();
@@ -134,16 +134,16 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public void ExitThread(KThread thread)
+ public void ExitThread(KThread Thread)
{
- thread.Context.StopExecution();
+ Thread.Context.StopExecution();
- CoreManager.Exit(thread.Context.Work);
+ CoreManager.Exit(Thread.Context.Work);
}
- public void RemoveThread(KThread thread)
+ public void RemoveThread(KThread Thread)
{
- CoreManager.RemoveThread(thread.Context.Work);
+ CoreManager.RemoveThread(Thread.Context.Work);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KAddressArbiter.cs b/Ryujinx.HLE/HOS/Kernel/KAddressArbiter.cs
index b4352485..cc637be0 100644
--- a/Ryujinx.HLE/HOS/Kernel/KAddressArbiter.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KAddressArbiter.cs
@@ -9,641 +9,641 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int HasListenersMask = 0x40000000;
- private Horizon _system;
+ private Horizon System;
public List<KThread> CondVarThreads;
public List<KThread> ArbiterThreads;
- public KAddressArbiter(Horizon system)
+ public KAddressArbiter(Horizon System)
{
- _system = system;
+ this.System = System;
CondVarThreads = new List<KThread>();
ArbiterThreads = new List<KThread>();
}
- public long ArbitrateLock(int ownerHandle, long mutexAddress, int requesterHandle)
+ public long ArbitrateLock(int OwnerHandle, long MutexAddress, int RequesterHandle)
{
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = 0;
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = 0;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (!KernelTransfer.UserToKernelInt32(_system, mutexAddress, out int mutexValue))
+ if (!KernelTransfer.UserToKernelInt32(System, MutexAddress, out int MutexValue))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);;
}
- if (mutexValue != (ownerHandle | HasListenersMask))
+ if (MutexValue != (OwnerHandle | HasListenersMask))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return 0;
}
- KThread mutexOwner = currentProcess.HandleTable.GetObject<KThread>(ownerHandle);
+ KThread MutexOwner = CurrentProcess.HandleTable.GetObject<KThread>(OwnerHandle);
- if (mutexOwner == null)
+ if (MutexOwner == null)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
- currentThread.MutexAddress = mutexAddress;
- currentThread.ThreadHandleForUserMutex = requesterHandle;
+ CurrentThread.MutexAddress = MutexAddress;
+ CurrentThread.ThreadHandleForUserMutex = RequesterHandle;
- mutexOwner.AddMutexWaiter(currentThread);
+ MutexOwner.AddMutexWaiter(CurrentThread);
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- _system.CriticalSection.Leave();
- _system.CriticalSection.Enter();
+ System.CriticalSection.Leave();
+ System.CriticalSection.Enter();
- if (currentThread.MutexOwner != null)
+ if (CurrentThread.MutexOwner != null)
{
- currentThread.MutexOwner.RemoveMutexWaiter(currentThread);
+ CurrentThread.MutexOwner.RemoveMutexWaiter(CurrentThread);
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return (uint)currentThread.ObjSyncResult;
+ return (uint)CurrentThread.ObjSyncResult;
}
- public long ArbitrateUnlock(long mutexAddress)
+ public long ArbitrateUnlock(long MutexAddress)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- (long result, KThread newOwnerThread) = MutexUnlock(currentThread, mutexAddress);
+ (long Result, KThread NewOwnerThread) = MutexUnlock(CurrentThread, MutexAddress);
- if (result != 0 && newOwnerThread != null)
+ if (Result != 0 && NewOwnerThread != null)
{
- newOwnerThread.SignaledObj = null;
- newOwnerThread.ObjSyncResult = (int)result;
+ NewOwnerThread.SignaledObj = null;
+ NewOwnerThread.ObjSyncResult = (int)Result;
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return result;
+ return Result;
}
public long WaitProcessWideKeyAtomic(
- long mutexAddress,
- long condVarAddress,
- int threadHandle,
- long timeout)
+ long MutexAddress,
+ long CondVarAddress,
+ int ThreadHandle,
+ long Timeout)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (CurrentThread.ShallBeTerminated ||
+ CurrentThread.SchedFlags == ThreadSchedState.TerminationPending)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.ThreadTerminating);
}
- (long result, _) = MutexUnlock(currentThread, mutexAddress);
+ (long Result, _) = MutexUnlock(CurrentThread, MutexAddress);
- if (result != 0)
+ if (Result != 0)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return result;
+ return Result;
}
- currentThread.MutexAddress = mutexAddress;
- currentThread.ThreadHandleForUserMutex = threadHandle;
- currentThread.CondVarAddress = condVarAddress;
+ CurrentThread.MutexAddress = MutexAddress;
+ CurrentThread.ThreadHandleForUserMutex = ThreadHandle;
+ CurrentThread.CondVarAddress = CondVarAddress;
- CondVarThreads.Add(currentThread);
+ CondVarThreads.Add(CurrentThread);
- if (timeout != 0)
+ if (Timeout != 0)
{
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
+ System.TimeManager.ScheduleFutureInvocation(CurrentThread, Timeout);
}
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.UnscheduleFutureInvocation(currentThread);
+ System.TimeManager.UnscheduleFutureInvocation(CurrentThread);
}
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (currentThread.MutexOwner != null)
+ if (CurrentThread.MutexOwner != null)
{
- currentThread.MutexOwner.RemoveMutexWaiter(currentThread);
+ CurrentThread.MutexOwner.RemoveMutexWaiter(CurrentThread);
}
- CondVarThreads.Remove(currentThread);
+ CondVarThreads.Remove(CurrentThread);
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return (uint)currentThread.ObjSyncResult;
+ return (uint)CurrentThread.ObjSyncResult;
}
- private (long, KThread) MutexUnlock(KThread currentThread, long mutexAddress)
+ private (long, KThread) MutexUnlock(KThread CurrentThread, long MutexAddress)
{
- KThread newOwnerThread = currentThread.RelinquishMutex(mutexAddress, out int count);
+ KThread NewOwnerThread = CurrentThread.RelinquishMutex(MutexAddress, out int Count);
- int mutexValue = 0;
+ int MutexValue = 0;
- if (newOwnerThread != null)
+ if (NewOwnerThread != null)
{
- mutexValue = newOwnerThread.ThreadHandleForUserMutex;
+ MutexValue = NewOwnerThread.ThreadHandleForUserMutex;
- if (count >= 2)
+ if (Count >= 2)
{
- mutexValue |= HasListenersMask;
+ MutexValue |= HasListenersMask;
}
- newOwnerThread.SignaledObj = null;
- newOwnerThread.ObjSyncResult = 0;
+ NewOwnerThread.SignaledObj = null;
+ NewOwnerThread.ObjSyncResult = 0;
- newOwnerThread.ReleaseAndResume();
+ NewOwnerThread.ReleaseAndResume();
}
- long result = 0;
+ long Result = 0;
- if (!KernelTransfer.KernelToUserInt32(_system, mutexAddress, mutexValue))
+ if (!KernelTransfer.KernelToUserInt32(System, MutexAddress, MutexValue))
{
- result = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
}
- return (result, newOwnerThread);
+ return (Result, NewOwnerThread);
}
- public void SignalProcessWideKey(long address, int count)
+ public void SignalProcessWideKey(long Address, int Count)
{
- Queue<KThread> signaledThreads = new Queue<KThread>();
+ Queue<KThread> SignaledThreads = new Queue<KThread>();
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- IOrderedEnumerable<KThread> sortedThreads = CondVarThreads.OrderBy(x => x.DynamicPriority);
+ IOrderedEnumerable<KThread> SortedThreads = CondVarThreads.OrderBy(x => x.DynamicPriority);
- foreach (KThread thread in sortedThreads.Where(x => x.CondVarAddress == address))
+ foreach (KThread Thread in SortedThreads.Where(x => x.CondVarAddress == Address))
{
- TryAcquireMutex(thread);
+ TryAcquireMutex(Thread);
- signaledThreads.Enqueue(thread);
+ SignaledThreads.Enqueue(Thread);
//If the count is <= 0, we should signal all threads waiting.
- if (count >= 1 && --count == 0)
+ if (Count >= 1 && --Count == 0)
{
break;
}
}
- while (signaledThreads.TryDequeue(out KThread thread))
+ while (SignaledThreads.TryDequeue(out KThread Thread))
{
- CondVarThreads.Remove(thread);
+ CondVarThreads.Remove(Thread);
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
}
- private KThread TryAcquireMutex(KThread requester)
+ private KThread TryAcquireMutex(KThread Requester)
{
- long address = requester.MutexAddress;
+ long Address = Requester.MutexAddress;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- if (!KernelTransfer.UserToKernelInt32(_system, address, out int mutexValue))
+ if (!KernelTransfer.UserToKernelInt32(System, Address, out int MutexValue))
{
//Invalid address.
- currentProcess.CpuMemory.ClearExclusive(0);
+ CurrentProcess.CpuMemory.ClearExclusive(0);
- requester.SignaledObj = null;
- requester.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ Requester.SignaledObj = null;
+ Requester.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return null;
}
while (true)
{
- if (currentProcess.CpuMemory.TestExclusive(0, address))
+ if (CurrentProcess.CpuMemory.TestExclusive(0, Address))
{
- if (mutexValue != 0)
+ if (MutexValue != 0)
{
//Update value to indicate there is a mutex waiter now.
- currentProcess.CpuMemory.WriteInt32(address, mutexValue | HasListenersMask);
+ CurrentProcess.CpuMemory.WriteInt32(Address, MutexValue | HasListenersMask);
}
else
{
//No thread owning the mutex, assign to requesting thread.
- currentProcess.CpuMemory.WriteInt32(address, requester.ThreadHandleForUserMutex);
+ CurrentProcess.CpuMemory.WriteInt32(Address, Requester.ThreadHandleForUserMutex);
}
- currentProcess.CpuMemory.ClearExclusiveForStore(0);
+ CurrentProcess.CpuMemory.ClearExclusiveForStore(0);
break;
}
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- mutexValue = currentProcess.CpuMemory.ReadInt32(address);
+ MutexValue = CurrentProcess.CpuMemory.ReadInt32(Address);
}
- if (mutexValue == 0)
+ if (MutexValue == 0)
{
//We now own the mutex.
- requester.SignaledObj = null;
- requester.ObjSyncResult = 0;
+ Requester.SignaledObj = null;
+ Requester.ObjSyncResult = 0;
- requester.ReleaseAndResume();
+ Requester.ReleaseAndResume();
return null;
}
- mutexValue &= ~HasListenersMask;
+ MutexValue &= ~HasListenersMask;
- KThread mutexOwner = currentProcess.HandleTable.GetObject<KThread>(mutexValue);
+ KThread MutexOwner = CurrentProcess.HandleTable.GetObject<KThread>(MutexValue);
- if (mutexOwner != null)
+ if (MutexOwner != null)
{
//Mutex already belongs to another thread, wait for it.
- mutexOwner.AddMutexWaiter(requester);
+ MutexOwner.AddMutexWaiter(Requester);
}
else
{
//Invalid mutex owner.
- requester.SignaledObj = null;
- requester.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ Requester.SignaledObj = null;
+ Requester.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
- requester.ReleaseAndResume();
+ Requester.ReleaseAndResume();
}
- return mutexOwner;
+ return MutexOwner;
}
- public long WaitForAddressIfEqual(long address, int value, long timeout)
+ public long WaitForAddressIfEqual(long Address, int Value, long Timeout)
{
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (CurrentThread.ShallBeTerminated ||
+ CurrentThread.SchedFlags == ThreadSchedState.TerminationPending)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.ThreadTerminating);
}
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
- if (!KernelTransfer.UserToKernelInt32(_system, address, out int currentValue))
+ if (!KernelTransfer.UserToKernelInt32(System, Address, out int CurrentValue))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
}
- if (currentValue == value)
+ if (CurrentValue == Value)
{
- if (timeout == 0)
+ if (Timeout == 0)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.Timeout);
}
- currentThread.MutexAddress = address;
- currentThread.WaitingInArbitration = true;
+ CurrentThread.MutexAddress = Address;
+ CurrentThread.WaitingInArbitration = true;
- InsertSortedByPriority(ArbiterThreads, currentThread);
+ InsertSortedByPriority(ArbiterThreads, CurrentThread);
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
+ System.TimeManager.ScheduleFutureInvocation(CurrentThread, Timeout);
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.UnscheduleFutureInvocation(currentThread);
+ System.TimeManager.UnscheduleFutureInvocation(CurrentThread);
}
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (currentThread.WaitingInArbitration)
+ if (CurrentThread.WaitingInArbitration)
{
- ArbiterThreads.Remove(currentThread);
+ ArbiterThreads.Remove(CurrentThread);
- currentThread.WaitingInArbitration = false;
+ CurrentThread.WaitingInArbitration = false;
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return currentThread.ObjSyncResult;
+ return CurrentThread.ObjSyncResult;
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
- public long WaitForAddressIfLessThan(long address, int value, bool shouldDecrement, long timeout)
+ public long WaitForAddressIfLessThan(long Address, int Value, bool ShouldDecrement, long Timeout)
{
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (CurrentThread.ShallBeTerminated ||
+ CurrentThread.SchedFlags == ThreadSchedState.TerminationPending)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.ThreadTerminating);
}
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = (int)MakeError(ErrorModule.Kernel, KernelErr.Timeout);
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
//If ShouldDecrement is true, do atomic decrement of the value at Address.
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- if (!KernelTransfer.UserToKernelInt32(_system, address, out int currentValue))
+ if (!KernelTransfer.UserToKernelInt32(System, Address, out int CurrentValue))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
}
- if (shouldDecrement)
+ if (ShouldDecrement)
{
- while (currentValue < value)
+ while (CurrentValue < Value)
{
- if (currentProcess.CpuMemory.TestExclusive(0, address))
+ if (CurrentProcess.CpuMemory.TestExclusive(0, Address))
{
- currentProcess.CpuMemory.WriteInt32(address, currentValue - 1);
+ CurrentProcess.CpuMemory.WriteInt32(Address, CurrentValue - 1);
- currentProcess.CpuMemory.ClearExclusiveForStore(0);
+ CurrentProcess.CpuMemory.ClearExclusiveForStore(0);
break;
}
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- currentValue = currentProcess.CpuMemory.ReadInt32(address);
+ CurrentValue = CurrentProcess.CpuMemory.ReadInt32(Address);
}
}
- currentProcess.CpuMemory.ClearExclusive(0);
+ CurrentProcess.CpuMemory.ClearExclusive(0);
- if (currentValue < value)
+ if (CurrentValue < Value)
{
- if (timeout == 0)
+ if (Timeout == 0)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.Timeout);
}
- currentThread.MutexAddress = address;
- currentThread.WaitingInArbitration = true;
+ CurrentThread.MutexAddress = Address;
+ CurrentThread.WaitingInArbitration = true;
- InsertSortedByPriority(ArbiterThreads, currentThread);
+ InsertSortedByPriority(ArbiterThreads, CurrentThread);
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
+ System.TimeManager.ScheduleFutureInvocation(CurrentThread, Timeout);
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.UnscheduleFutureInvocation(currentThread);
+ System.TimeManager.UnscheduleFutureInvocation(CurrentThread);
}
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (currentThread.WaitingInArbitration)
+ if (CurrentThread.WaitingInArbitration)
{
- ArbiterThreads.Remove(currentThread);
+ ArbiterThreads.Remove(CurrentThread);
- currentThread.WaitingInArbitration = false;
+ CurrentThread.WaitingInArbitration = false;
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return currentThread.ObjSyncResult;
+ return CurrentThread.ObjSyncResult;
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
- private void InsertSortedByPriority(List<KThread> threads, KThread thread)
+ private void InsertSortedByPriority(List<KThread> Threads, KThread Thread)
{
- int nextIndex = -1;
+ int NextIndex = -1;
- for (int index = 0; index < threads.Count; index++)
+ for (int Index = 0; Index < Threads.Count; Index++)
{
- if (threads[index].DynamicPriority > thread.DynamicPriority)
+ if (Threads[Index].DynamicPriority > Thread.DynamicPriority)
{
- nextIndex = index;
+ NextIndex = Index;
break;
}
}
- if (nextIndex != -1)
+ if (NextIndex != -1)
{
- threads.Insert(nextIndex, thread);
+ Threads.Insert(NextIndex, Thread);
}
else
{
- threads.Add(thread);
+ Threads.Add(Thread);
}
}
- public long Signal(long address, int count)
+ public long Signal(long Address, int Count)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- WakeArbiterThreads(address, count);
+ WakeArbiterThreads(Address, Count);
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return 0;
}
- public long SignalAndIncrementIfEqual(long address, int value, int count)
+ public long SignalAndIncrementIfEqual(long Address, int Value, int Count)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- if (!KernelTransfer.UserToKernelInt32(_system, address, out int currentValue))
+ if (!KernelTransfer.UserToKernelInt32(System, Address, out int CurrentValue))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
}
- while (currentValue == value)
+ while (CurrentValue == Value)
{
- if (currentProcess.CpuMemory.TestExclusive(0, address))
+ if (CurrentProcess.CpuMemory.TestExclusive(0, Address))
{
- currentProcess.CpuMemory.WriteInt32(address, currentValue + 1);
+ CurrentProcess.CpuMemory.WriteInt32(Address, CurrentValue + 1);
- currentProcess.CpuMemory.ClearExclusiveForStore(0);
+ CurrentProcess.CpuMemory.ClearExclusiveForStore(0);
break;
}
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- currentValue = currentProcess.CpuMemory.ReadInt32(address);
+ CurrentValue = CurrentProcess.CpuMemory.ReadInt32(Address);
}
- currentProcess.CpuMemory.ClearExclusive(0);
+ CurrentProcess.CpuMemory.ClearExclusive(0);
- if (currentValue != value)
+ if (CurrentValue != Value)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
- WakeArbiterThreads(address, count);
+ WakeArbiterThreads(Address, Count);
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return 0;
}
- public long SignalAndModifyIfEqual(long address, int value, int count)
+ public long SignalAndModifyIfEqual(long Address, int Value, int Count)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- int offset;
+ int Offset;
//The value is decremented if the number of threads waiting is less
//or equal to the Count of threads to be signaled, or Count is zero
//or negative. It is incremented if there are no threads waiting.
- int waitingCount = 0;
+ int WaitingCount = 0;
- foreach (KThread thread in ArbiterThreads.Where(x => x.MutexAddress == address))
+ foreach (KThread Thread in ArbiterThreads.Where(x => x.MutexAddress == Address))
{
- if (++waitingCount > count)
+ if (++WaitingCount > Count)
{
break;
}
}
- if (waitingCount > 0)
+ if (WaitingCount > 0)
{
- offset = waitingCount <= count || count <= 0 ? -1 : 0;
+ Offset = WaitingCount <= Count || Count <= 0 ? -1 : 0;
}
else
{
- offset = 1;
+ Offset = 1;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- if (!KernelTransfer.UserToKernelInt32(_system, address, out int currentValue))
+ if (!KernelTransfer.UserToKernelInt32(System, Address, out int CurrentValue))
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
}
- while (currentValue == value)
+ while (CurrentValue == Value)
{
- if (currentProcess.CpuMemory.TestExclusive(0, address))
+ if (CurrentProcess.CpuMemory.TestExclusive(0, Address))
{
- currentProcess.CpuMemory.WriteInt32(address, currentValue + offset);
+ CurrentProcess.CpuMemory.WriteInt32(Address, CurrentValue + Offset);
- currentProcess.CpuMemory.ClearExclusiveForStore(0);
+ CurrentProcess.CpuMemory.ClearExclusiveForStore(0);
break;
}
- currentProcess.CpuMemory.SetExclusive(0, address);
+ CurrentProcess.CpuMemory.SetExclusive(0, Address);
- currentValue = currentProcess.CpuMemory.ReadInt32(address);
+ CurrentValue = CurrentProcess.CpuMemory.ReadInt32(Address);
}
- currentProcess.CpuMemory.ClearExclusive(0);
+ CurrentProcess.CpuMemory.ClearExclusive(0);
- if (currentValue != value)
+ if (CurrentValue != Value)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
- WakeArbiterThreads(address, count);
+ WakeArbiterThreads(Address, Count);
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return 0;
}
- private void WakeArbiterThreads(long address, int count)
+ private void WakeArbiterThreads(long Address, int Count)
{
- Queue<KThread> signaledThreads = new Queue<KThread>();
+ Queue<KThread> SignaledThreads = new Queue<KThread>();
- foreach (KThread thread in ArbiterThreads.Where(x => x.MutexAddress == address))
+ foreach (KThread Thread in ArbiterThreads.Where(x => x.MutexAddress == Address))
{
- signaledThreads.Enqueue(thread);
+ SignaledThreads.Enqueue(Thread);
//If the count is <= 0, we should signal all threads waiting.
- if (count >= 1 && --count == 0)
+ if (Count >= 1 && --Count == 0)
{
break;
}
}
- while (signaledThreads.TryDequeue(out KThread thread))
+ while (SignaledThreads.TryDequeue(out KThread Thread))
{
- thread.SignaledObj = null;
- thread.ObjSyncResult = 0;
+ Thread.SignaledObj = null;
+ Thread.ObjSyncResult = 0;
- thread.ReleaseAndResume();
+ Thread.ReleaseAndResume();
- thread.WaitingInArbitration = false;
+ Thread.WaitingInArbitration = false;
- ArbiterThreads.Remove(thread);
+ ArbiterThreads.Remove(Thread);
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KAutoObject.cs b/Ryujinx.HLE/HOS/Kernel/KAutoObject.cs
index f49beaac..a91bf9a8 100644
--- a/Ryujinx.HLE/HOS/Kernel/KAutoObject.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KAutoObject.cs
@@ -4,14 +4,14 @@ namespace Ryujinx.HLE.HOS.Kernel
{
protected Horizon System;
- public KAutoObject(Horizon system)
+ public KAutoObject(Horizon System)
{
- System = system;
+ this.System = System;
}
- public virtual KernelResult SetName(string name)
+ public virtual KernelResult SetName(string Name)
{
- if (!System.AutoObjectNames.TryAdd(name, this))
+ if (!System.AutoObjectNames.TryAdd(Name, this))
{
return KernelResult.InvalidState;
}
@@ -19,9 +19,9 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- public static KernelResult RemoveName(Horizon system, string name)
+ public static KernelResult RemoveName(Horizon System, string Name)
{
- if (!system.AutoObjectNames.TryRemove(name, out _))
+ if (!System.AutoObjectNames.TryRemove(Name, out _))
{
return KernelResult.NotFound;
}
@@ -29,11 +29,11 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- public static KAutoObject FindNamedObject(Horizon system, string name)
+ public static KAutoObject FindNamedObject(Horizon System, string Name)
{
- if (system.AutoObjectNames.TryGetValue(name, out KAutoObject obj))
+ if (System.AutoObjectNames.TryGetValue(Name, out KAutoObject Obj))
{
- return obj;
+ return Obj;
}
return null;
diff --git a/Ryujinx.HLE/HOS/Kernel/KClientPort.cs b/Ryujinx.HLE/HOS/Kernel/KClientPort.cs
index 57547627..e3f8128b 100644
--- a/Ryujinx.HLE/HOS/Kernel/KClientPort.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KClientPort.cs
@@ -2,30 +2,30 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KClientPort : KSynchronizationObject
{
- private int _sessionsCount;
- private int _currentCapacity;
- private int _maxSessions;
+ private int SessionsCount;
+ private int CurrentCapacity;
+ private int MaxSessions;
- private KPort _parent;
+ private KPort Parent;
- public KClientPort(Horizon system) : base(system) { }
+ public KClientPort(Horizon System) : base(System) { }
- public void Initialize(KPort parent, int maxSessions)
+ public void Initialize(KPort Parent, int MaxSessions)
{
- _maxSessions = maxSessions;
- _parent = parent;
+ this.MaxSessions = MaxSessions;
+ this.Parent = Parent;
}
- public new static KernelResult RemoveName(Horizon system, string name)
+ public new static KernelResult RemoveName(Horizon System, string Name)
{
- KAutoObject foundObj = FindNamedObject(system, name);
+ KAutoObject FoundObj = KAutoObject.FindNamedObject(System, Name);
- if (!(foundObj is KClientPort))
+ if (!(FoundObj is KClientPort))
{
return KernelResult.NotFound;
}
- return KAutoObject.RemoveName(system, name);
+ return KAutoObject.RemoveName(System, Name);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KConditionVariable.cs b/Ryujinx.HLE/HOS/Kernel/KConditionVariable.cs
index 15c96c24..1c95f811 100644
--- a/Ryujinx.HLE/HOS/Kernel/KConditionVariable.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KConditionVariable.cs
@@ -5,67 +5,67 @@ namespace Ryujinx.HLE.HOS.Kernel
{
static class KConditionVariable
{
- public static void Wait(Horizon system, LinkedList<KThread> threadList, object mutex, long timeout)
+ public static void Wait(Horizon System, LinkedList<KThread> ThreadList, object Mutex, long Timeout)
{
- KThread currentThread = system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- Monitor.Exit(mutex);
+ Monitor.Exit(Mutex);
- currentThread.Withholder = threadList;
+ CurrentThread.Withholder = ThreadList;
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- currentThread.WithholderNode = threadList.AddLast(currentThread);
+ CurrentThread.WithholderNode = ThreadList.AddLast(CurrentThread);
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (CurrentThread.ShallBeTerminated ||
+ CurrentThread.SchedFlags == ThreadSchedState.TerminationPending)
{
- threadList.Remove(currentThread.WithholderNode);
+ ThreadList.Remove(CurrentThread.WithholderNode);
- currentThread.Reschedule(ThreadSchedState.Running);
+ CurrentThread.Reschedule(ThreadSchedState.Running);
- currentThread.Withholder = null;
+ CurrentThread.Withholder = null;
- system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
}
else
{
- if (timeout > 0)
+ if (Timeout > 0)
{
- system.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
+ System.TimeManager.ScheduleFutureInvocation(CurrentThread, Timeout);
}
- system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- if (timeout > 0)
+ if (Timeout > 0)
{
- system.TimeManager.UnscheduleFutureInvocation(currentThread);
+ System.TimeManager.UnscheduleFutureInvocation(CurrentThread);
}
}
- Monitor.Enter(mutex);
+ Monitor.Enter(Mutex);
}
- public static void NotifyAll(Horizon system, LinkedList<KThread> threadList)
+ public static void NotifyAll(Horizon System, LinkedList<KThread> ThreadList)
{
- system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- LinkedListNode<KThread> node = threadList.First;
+ LinkedListNode<KThread> Node = ThreadList.First;
- for (; node != null; node = threadList.First)
+ for (; Node != null; Node = ThreadList.First)
{
- KThread thread = node.Value;
+ KThread Thread = Node.Value;
- threadList.Remove(thread.WithholderNode);
+ ThreadList.Remove(Thread.WithholderNode);
- thread.Withholder = null;
+ Thread.Withholder = null;
- thread.Reschedule(ThreadSchedState.Running);
+ Thread.Reschedule(ThreadSchedState.Running);
}
- system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KContextIdManager.cs b/Ryujinx.HLE/HOS/Kernel/KContextIdManager.cs
index 80a1c1c7..03e7dddf 100644
--- a/Ryujinx.HLE/HOS/Kernel/KContextIdManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KContextIdManager.cs
@@ -7,77 +7,77 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int IdMasksCount = 8;
- private int[] _idMasks;
+ private int[] IdMasks;
- private int _nextFreeBitHint;
+ private int NextFreeBitHint;
public KContextIdManager()
{
- _idMasks = new int[IdMasksCount];
+ IdMasks = new int[IdMasksCount];
}
public int GetId()
{
- lock (_idMasks)
+ lock (IdMasks)
{
- int id = 0;
+ int Id = 0;
- if (!TestBit(_nextFreeBitHint))
+ if (!TestBit(NextFreeBitHint))
{
- id = _nextFreeBitHint;
+ Id = NextFreeBitHint;
}
else
{
- for (int index = 0; index < IdMasksCount; index++)
+ for (int Index = 0; Index < IdMasksCount; Index++)
{
- int mask = _idMasks[index];
+ int Mask = IdMasks[Index];
- int firstFreeBit = BitUtils.CountLeadingZeros32((mask + 1) & ~mask);
+ int FirstFreeBit = BitUtils.CountLeadingZeros32((Mask + 1) & ~Mask);
- if (firstFreeBit < 32)
+ if (FirstFreeBit < 32)
{
- int baseBit = index * 32 + 31;
+ int BaseBit = Index * 32 + 31;
- id = baseBit - firstFreeBit;
+ Id = BaseBit - FirstFreeBit;
break;
}
- else if (index == IdMasksCount - 1)
+ else if (Index == IdMasksCount - 1)
{
throw new InvalidOperationException("Maximum number of Ids reached!");
}
}
}
- _nextFreeBitHint = id + 1;
+ NextFreeBitHint = Id + 1;
- SetBit(id);
+ SetBit(Id);
- return id;
+ return Id;
}
}
- public void PutId(int id)
+ public void PutId(int Id)
{
- lock (_idMasks)
+ lock (IdMasks)
{
- ClearBit(id);
+ ClearBit(Id);
}
}
- private bool TestBit(int bit)
+ private bool TestBit(int Bit)
{
- return (_idMasks[_nextFreeBitHint / 32] & (1 << (_nextFreeBitHint & 31))) != 0;
+ return (IdMasks[NextFreeBitHint / 32] & (1 << (NextFreeBitHint & 31))) != 0;
}
- private void SetBit(int bit)
+ private void SetBit(int Bit)
{
- _idMasks[_nextFreeBitHint / 32] |= (1 << (_nextFreeBitHint & 31));
+ IdMasks[NextFreeBitHint / 32] |= (1 << (NextFreeBitHint & 31));
}
- private void ClearBit(int bit)
+ private void ClearBit(int Bit)
{
- _idMasks[_nextFreeBitHint / 32] &= ~(1 << (_nextFreeBitHint & 31));
+ IdMasks[NextFreeBitHint / 32] &= ~(1 << (NextFreeBitHint & 31));
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs b/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
index 4ca3c25a..638dde9e 100644
--- a/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KCoreContext.cs
@@ -4,9 +4,9 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KCoreContext
{
- private KScheduler _scheduler;
+ private KScheduler Scheduler;
- private HleCoreManager _coreManager;
+ private HleCoreManager CoreManager;
public bool ContextSwitchNeeded { get; private set; }
@@ -17,15 +17,15 @@ namespace Ryujinx.HLE.HOS.Kernel
public KThread CurrentThread { get; private set; }
public KThread SelectedThread { get; private set; }
- public KCoreContext(KScheduler scheduler, HleCoreManager coreManager)
+ public KCoreContext(KScheduler Scheduler, HleCoreManager CoreManager)
{
- _scheduler = scheduler;
- _coreManager = coreManager;
+ this.Scheduler = Scheduler;
+ this.CoreManager = CoreManager;
}
- public void SelectThread(KThread thread)
+ public void SelectThread(KThread Thread)
{
- SelectedThread = thread;
+ SelectedThread = Thread;
if (SelectedThread != CurrentThread)
{
@@ -43,10 +43,10 @@ namespace Ryujinx.HLE.HOS.Kernel
if (CurrentThread != null)
{
- long currentTime = PerformanceCounter.ElapsedMilliseconds;
+ long CurrentTime = PerformanceCounter.ElapsedMilliseconds;
- CurrentThread.TotalTimeRunning += currentTime - CurrentThread.LastScheduledTime;
- CurrentThread.LastScheduledTime = currentTime;
+ CurrentThread.TotalTimeRunning += CurrentTime - CurrentThread.LastScheduledTime;
+ CurrentThread.LastScheduledTime = CurrentTime;
}
}
@@ -58,21 +58,21 @@ namespace Ryujinx.HLE.HOS.Kernel
if (CurrentThread != null)
{
- _coreManager.Reset(CurrentThread.Context.Work);
+ CoreManager.Reset(CurrentThread.Context.Work);
}
CurrentThread = SelectedThread;
if (CurrentThread != null)
{
- long currentTime = PerformanceCounter.ElapsedMilliseconds;
+ long CurrentTime = PerformanceCounter.ElapsedMilliseconds;
- CurrentThread.TotalTimeRunning += currentTime - CurrentThread.LastScheduledTime;
- CurrentThread.LastScheduledTime = currentTime;
+ CurrentThread.TotalTimeRunning += CurrentTime - CurrentThread.LastScheduledTime;
+ CurrentThread.LastScheduledTime = CurrentTime;
CurrentThread.ClearExclusive();
- _coreManager.Set(CurrentThread.Context.Work);
+ CoreManager.Set(CurrentThread.Context.Work);
CurrentThread.Context.Execute();
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KCriticalSection.cs b/Ryujinx.HLE/HOS/Kernel/KCriticalSection.cs
index 4bafa69d..b02a1195 100644
--- a/Ryujinx.HLE/HOS/Kernel/KCriticalSection.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KCriticalSection.cs
@@ -5,15 +5,15 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KCriticalSection
{
- private Horizon _system;
+ private Horizon System;
- public object LockObj { get; }
+ public object LockObj { get; private set; }
- private int _recursionCount;
+ private int RecursionCount;
- public KCriticalSection(Horizon system)
+ public KCriticalSection(Horizon System)
{
- _system = system;
+ this.System = System;
LockObj = new object();
}
@@ -22,53 +22,53 @@ namespace Ryujinx.HLE.HOS.Kernel
{
Monitor.Enter(LockObj);
- _recursionCount++;
+ RecursionCount++;
}
public void Leave()
{
- if (_recursionCount == 0)
+ if (RecursionCount == 0)
{
return;
}
- bool doContextSwitch = false;
+ bool DoContextSwitch = false;
- if (--_recursionCount == 0)
+ if (--RecursionCount == 0)
{
- if (_system.Scheduler.ThreadReselectionRequested)
+ if (System.Scheduler.ThreadReselectionRequested)
{
- _system.Scheduler.SelectThreads();
+ System.Scheduler.SelectThreads();
}
Monitor.Exit(LockObj);
- if (_system.Scheduler.MultiCoreScheduling)
+ if (System.Scheduler.MultiCoreScheduling)
{
- lock (_system.Scheduler.CoreContexts)
+ lock (System.Scheduler.CoreContexts)
{
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- KCoreContext coreContext = _system.Scheduler.CoreContexts[core];
+ KCoreContext CoreContext = System.Scheduler.CoreContexts[Core];
- if (coreContext.ContextSwitchNeeded)
+ if (CoreContext.ContextSwitchNeeded)
{
- CpuThread currentHleThread = coreContext.CurrentThread?.Context;
+ CpuThread CurrentHleThread = CoreContext.CurrentThread?.Context;
- if (currentHleThread == null)
+ if (CurrentHleThread == null)
{
//Nothing is running, we can perform the context switch immediately.
- coreContext.ContextSwitch();
+ CoreContext.ContextSwitch();
}
- else if (currentHleThread.IsCurrentThread())
+ else if (CurrentHleThread.IsCurrentThread())
{
//Thread running on the current core, context switch will block.
- doContextSwitch = true;
+ DoContextSwitch = true;
}
else
{
//Thread running on another core, request a interrupt.
- currentHleThread.RequestInterrupt();
+ CurrentHleThread.RequestInterrupt();
}
}
}
@@ -76,7 +76,7 @@ namespace Ryujinx.HLE.HOS.Kernel
}
else
{
- doContextSwitch = true;
+ DoContextSwitch = true;
}
}
else
@@ -84,9 +84,9 @@ namespace Ryujinx.HLE.HOS.Kernel
Monitor.Exit(LockObj);
}
- if (doContextSwitch)
+ if (DoContextSwitch)
{
- _system.Scheduler.ContextSwitch();
+ System.Scheduler.ContextSwitch();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KEvent.cs b/Ryujinx.HLE/HOS/Kernel/KEvent.cs
index 032e2a4c..106d1b40 100644
--- a/Ryujinx.HLE/HOS/Kernel/KEvent.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KEvent.cs
@@ -2,12 +2,12 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KEvent
{
- public KReadableEvent ReadableEvent { get; }
- public KWritableEvent WritableEvent { get; }
+ public KReadableEvent ReadableEvent { get; private set; }
+ public KWritableEvent WritableEvent { get; private set; }
- public KEvent(Horizon system)
+ public KEvent(Horizon System)
{
- ReadableEvent = new KReadableEvent(system, this);
+ ReadableEvent = new KReadableEvent(System, this);
WritableEvent = new KWritableEvent(this);
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KHandleEntry.cs b/Ryujinx.HLE/HOS/Kernel/KHandleEntry.cs
index 1799e964..9863a374 100644
--- a/Ryujinx.HLE/HOS/Kernel/KHandleEntry.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KHandleEntry.cs
@@ -4,14 +4,14 @@ namespace Ryujinx.HLE.HOS.Kernel
{
public KHandleEntry Next { get; set; }
- public int Index { get; }
+ public int Index { get; private set; }
public ushort HandleId { get; set; }
public object Obj { get; set; }
- public KHandleEntry(int index)
+ public KHandleEntry(int Index)
{
- Index = index;
+ this.Index = Index;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KHandleTable.cs b/Ryujinx.HLE/HOS/Kernel/KHandleTable.cs
index 88d0c513..e39dfb67 100644
--- a/Ryujinx.HLE/HOS/Kernel/KHandleTable.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KHandleTable.cs
@@ -7,148 +7,148 @@ namespace Ryujinx.HLE.HOS.Kernel
private const int SelfThreadHandle = (0x1ffff << 15) | 0;
private const int SelfProcessHandle = (0x1ffff << 15) | 1;
- private Horizon _system;
+ private Horizon System;
- private KHandleEntry[] _table;
+ private KHandleEntry[] Table;
- private KHandleEntry _tableHead;
- private KHandleEntry _nextFreeEntry;
+ private KHandleEntry TableHead;
+ private KHandleEntry NextFreeEntry;
- private int _activeSlotsCount;
+ private int ActiveSlotsCount;
- private int _size;
+ private int Size;
- private ushort _idCounter;
+ private ushort IdCounter;
- public KHandleTable(Horizon system)
+ public KHandleTable(Horizon System)
{
- _system = system;
+ this.System = System;
}
- public KernelResult Initialize(int size)
+ public KernelResult Initialize(int Size)
{
- if ((uint)size > 1024)
+ if ((uint)Size > 1024)
{
return KernelResult.OutOfMemory;
}
- if (size < 1)
+ if (Size < 1)
{
- size = 1024;
+ Size = 1024;
}
- _size = size;
+ this.Size = Size;
- _idCounter = 1;
+ IdCounter = 1;
- _table = new KHandleEntry[size];
+ Table = new KHandleEntry[Size];
- _tableHead = new KHandleEntry(0);
+ TableHead = new KHandleEntry(0);
- KHandleEntry entry = _tableHead;
+ KHandleEntry Entry = TableHead;
- for (int index = 0; index < size; index++)
+ for (int Index = 0; Index < Size; Index++)
{
- _table[index] = entry;
+ Table[Index] = Entry;
- entry.Next = new KHandleEntry(index + 1);
+ Entry.Next = new KHandleEntry(Index + 1);
- entry = entry.Next;
+ Entry = Entry.Next;
}
- _table[size - 1].Next = null;
+ Table[Size - 1].Next = null;
- _nextFreeEntry = _tableHead;
+ NextFreeEntry = TableHead;
return KernelResult.Success;
}
- public KernelResult GenerateHandle(object obj, out int handle)
+ public KernelResult GenerateHandle(object Obj, out int Handle)
{
- handle = 0;
+ Handle = 0;
- lock (_table)
+ lock (Table)
{
- if (_activeSlotsCount >= _size)
+ if (ActiveSlotsCount >= Size)
{
return KernelResult.HandleTableFull;
}
- KHandleEntry entry = _nextFreeEntry;
+ KHandleEntry Entry = NextFreeEntry;
- _nextFreeEntry = entry.Next;
+ NextFreeEntry = Entry.Next;
- entry.Obj = obj;
- entry.HandleId = _idCounter;
+ Entry.Obj = Obj;
+ Entry.HandleId = IdCounter;
- _activeSlotsCount++;
+ ActiveSlotsCount++;
- handle = (int)((_idCounter << 15) & 0xffff8000) | entry.Index;
+ Handle = (int)((IdCounter << 15) & (uint)0xffff8000) | Entry.Index;
- if ((short)(_idCounter + 1) >= 0)
+ if ((short)(IdCounter + 1) >= 0)
{
- _idCounter++;
+ IdCounter++;
}
else
{
- _idCounter = 1;
+ IdCounter = 1;
}
}
return KernelResult.Success;
}
- public bool CloseHandle(int handle)
+ public bool CloseHandle(int Handle)
{
- if ((handle >> 30) != 0 ||
- handle == SelfThreadHandle ||
- handle == SelfProcessHandle)
+ if ((Handle >> 30) != 0 ||
+ Handle == SelfThreadHandle ||
+ Handle == SelfProcessHandle)
{
return false;
}
- int index = (handle >> 0) & 0x7fff;
- int handleId = (handle >> 15);
+ int Index = (Handle >> 0) & 0x7fff;
+ int HandleId = (Handle >> 15);
- bool result = false;
+ bool Result = false;
- lock (_table)
+ lock (Table)
{
- if (handleId != 0 && index < _size)
+ if (HandleId != 0 && Index < Size)
{
- KHandleEntry entry = _table[index];
+ KHandleEntry Entry = Table[Index];
- if (entry.Obj != null && entry.HandleId == handleId)
+ if (Entry.Obj != null && Entry.HandleId == HandleId)
{
- entry.Obj = null;
- entry.Next = _nextFreeEntry;
+ Entry.Obj = null;
+ Entry.Next = NextFreeEntry;
- _nextFreeEntry = entry;
+ NextFreeEntry = Entry;
- _activeSlotsCount--;
+ ActiveSlotsCount--;
- result = true;
+ Result = true;
}
}
}
- return result;
+ return Result;
}
- public T GetObject<T>(int handle)
+ public T GetObject<T>(int Handle)
{
- int index = (handle >> 0) & 0x7fff;
- int handleId = (handle >> 15);
+ int Index = (Handle >> 0) & 0x7fff;
+ int HandleId = (Handle >> 15);
- lock (_table)
+ lock (Table)
{
- if ((handle >> 30) == 0 && handleId != 0)
+ if ((Handle >> 30) == 0 && HandleId != 0)
{
- KHandleEntry entry = _table[index];
+ KHandleEntry Entry = Table[Index];
- if (entry.HandleId == handleId && entry.Obj is T obj)
+ if (Entry.HandleId == HandleId && Entry.Obj is T Obj)
{
- return obj;
+ return Obj;
}
}
}
@@ -156,49 +156,49 @@ namespace Ryujinx.HLE.HOS.Kernel
return default(T);
}
- public KThread GetKThread(int handle)
+ public KThread GetKThread(int Handle)
{
- if (handle == SelfThreadHandle)
+ if (Handle == SelfThreadHandle)
{
- return _system.Scheduler.GetCurrentThread();
+ return System.Scheduler.GetCurrentThread();
}
else
{
- return GetObject<KThread>(handle);
+ return GetObject<KThread>(Handle);
}
}
- public KProcess GetKProcess(int handle)
+ public KProcess GetKProcess(int Handle)
{
- if (handle == SelfProcessHandle)
+ if (Handle == SelfProcessHandle)
{
- return _system.Scheduler.GetCurrentProcess();
+ return System.Scheduler.GetCurrentProcess();
}
else
{
- return GetObject<KProcess>(handle);
+ return GetObject<KProcess>(Handle);
}
}
public void Destroy()
{
- lock (_table)
+ lock (Table)
{
- for (int index = 0; index < _size; index++)
+ for (int Index = 0; Index < Size; Index++)
{
- KHandleEntry entry = _table[index];
+ KHandleEntry Entry = Table[Index];
- if (entry.Obj != null)
+ if (Entry.Obj != null)
{
- if (entry.Obj is IDisposable disposableObj)
+ if (Entry.Obj is IDisposable DisposableObj)
{
- disposableObj.Dispose();
+ DisposableObj.Dispose();
}
- entry.Obj = null;
- entry.Next = _nextFreeEntry;
+ Entry.Obj = null;
+ Entry.Next = NextFreeEntry;
- _nextFreeEntry = entry;
+ NextFreeEntry = Entry;
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryArrange.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryArrange.cs
index 853c6ab1..af393b68 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryArrange.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryArrange.cs
@@ -2,21 +2,21 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KMemoryArrange
{
- public KMemoryArrangeRegion Service { get; }
- public KMemoryArrangeRegion NvServices { get; }
- public KMemoryArrangeRegion Applet { get; }
- public KMemoryArrangeRegion Application { get; }
+ public KMemoryArrangeRegion Service { get; private set; }
+ public KMemoryArrangeRegion NvServices { get; private set; }
+ public KMemoryArrangeRegion Applet { get; private set; }
+ public KMemoryArrangeRegion Application { get; private set; }
public KMemoryArrange(
- KMemoryArrangeRegion service,
- KMemoryArrangeRegion nvServices,
- KMemoryArrangeRegion applet,
- KMemoryArrangeRegion application)
+ KMemoryArrangeRegion Service,
+ KMemoryArrangeRegion NvServices,
+ KMemoryArrangeRegion Applet,
+ KMemoryArrangeRegion Application)
{
- Service = service;
- NvServices = nvServices;
- Applet = applet;
- Application = application;
+ this.Service = Service;
+ this.NvServices = NvServices;
+ this.Applet = Applet;
+ this.Application = Application;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryArrangeRegion.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryArrangeRegion.cs
index c76cf42e..7d66e291 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryArrangeRegion.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryArrangeRegion.cs
@@ -2,15 +2,15 @@ namespace Ryujinx.HLE.HOS.Kernel
{
struct KMemoryArrangeRegion
{
- public ulong Address { get; }
- public ulong Size { get; }
+ public ulong Address { get; private set; }
+ public ulong Size { get; private set; }
public ulong EndAddr => Address + Size;
- public KMemoryArrangeRegion(ulong address, ulong size)
+ public KMemoryArrangeRegion(ulong Address, ulong Size)
{
- Address = address;
- Size = size;
+ this.Address = Address;
+ this.Size = Size;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryBlock.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryBlock.cs
index 44b7a683..08190236 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryBlock.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryBlock.cs
@@ -13,26 +13,26 @@ namespace Ryujinx.HLE.HOS.Kernel
public int DeviceRefCount { get; set; }
public KMemoryBlock(
- ulong baseAddress,
- ulong pagesCount,
- MemoryState state,
- MemoryPermission permission,
- MemoryAttribute attribute)
+ ulong BaseAddress,
+ ulong PagesCount,
+ MemoryState State,
+ MemoryPermission Permission,
+ MemoryAttribute Attribute)
{
- BaseAddress = baseAddress;
- PagesCount = pagesCount;
- State = state;
- Attribute = attribute;
- Permission = permission;
+ this.BaseAddress = BaseAddress;
+ this.PagesCount = PagesCount;
+ this.State = State;
+ this.Attribute = Attribute;
+ this.Permission = Permission;
}
public KMemoryInfo GetInfo()
{
- ulong size = PagesCount * KMemoryManager.PageSize;
+ ulong Size = PagesCount * KMemoryManager.PageSize;
return new KMemoryInfo(
BaseAddress,
- size,
+ Size,
State,
Permission,
Attribute,
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryBlockAllocator.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryBlockAllocator.cs
index 375685e6..08512e12 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryBlockAllocator.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryBlockAllocator.cs
@@ -2,18 +2,18 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KMemoryBlockAllocator
{
- private ulong _capacityElements;
+ private ulong CapacityElements;
public int Count { get; set; }
- public KMemoryBlockAllocator(ulong capacityElements)
+ public KMemoryBlockAllocator(ulong CapacityElements)
{
- _capacityElements = capacityElements;
+ this.CapacityElements = CapacityElements;
}
- public bool CanAllocate(int count)
+ public bool CanAllocate(int Count)
{
- return (ulong)(Count + count) <= _capacityElements;
+ return (ulong)(this.Count + Count) <= CapacityElements;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryInfo.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryInfo.cs
index 8ae522d4..09ba88f2 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryInfo.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryInfo.cs
@@ -2,32 +2,32 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KMemoryInfo
{
- public ulong Address { get; }
- public ulong Size { get; }
+ public ulong Address { get; private set; }
+ public ulong Size { get; private set; }
- public MemoryState State { get; }
- public MemoryPermission Permission { get; }
- public MemoryAttribute Attribute { get; }
+ public MemoryState State { get; private set; }
+ public MemoryPermission Permission { get; private set; }
+ public MemoryAttribute Attribute { get; private set; }
- public int IpcRefCount { get; }
- public int DeviceRefCount { get; }
+ public int IpcRefCount { get; private set; }
+ public int DeviceRefCount { get; private set; }
public KMemoryInfo(
- ulong address,
- ulong size,
- MemoryState state,
- MemoryPermission permission,
- MemoryAttribute attribute,
- int ipcRefCount,
- int deviceRefCount)
+ ulong Address,
+ ulong Size,
+ MemoryState State,
+ MemoryPermission Permission,
+ MemoryAttribute Attribute,
+ int IpcRefCount,
+ int DeviceRefCount)
{
- Address = address;
- Size = size;
- State = state;
- Attribute = attribute;
- Permission = permission;
- IpcRefCount = ipcRefCount;
- DeviceRefCount = deviceRefCount;
+ this.Address = Address;
+ this.Size = Size;
+ this.State = State;
+ this.Attribute = Attribute;
+ this.Permission = Permission;
+ this.IpcRefCount = IpcRefCount;
+ this.DeviceRefCount = DeviceRefCount;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
index 831844c7..0aa21e3f 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryManager.cs
@@ -15,11 +15,11 @@ namespace Ryujinx.HLE.HOS.Kernel
//needs to be split in 2, plus one block that will be the new one inserted.
private const int MaxBlocksNeededForInsertion = 2;
- private LinkedList<KMemoryBlock> _blocks;
+ private LinkedList<KMemoryBlock> Blocks;
- private MemoryManager _cpuMemory;
+ private MemoryManager CpuMemory;
- private Horizon _system;
+ private Horizon System;
public ulong AddrSpaceStart { get; private set; }
public ulong AddrSpaceEnd { get; private set; }
@@ -30,7 +30,7 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong HeapRegionStart { get; private set; }
public ulong HeapRegionEnd { get; private set; }
- private ulong _currentHeapAddr;
+ private ulong CurrentHeapAddr;
public ulong AliasRegionStart { get; private set; }
public ulong AliasRegionEnd { get; private set; }
@@ -41,71 +41,71 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong TlsIoRegionStart { get; private set; }
public ulong TlsIoRegionEnd { get; private set; }
- private ulong _heapCapacity;
+ private ulong HeapCapacity;
public ulong PhysicalMemoryUsage { get; private set; }
- private MemoryRegion _memRegion;
+ private MemoryRegion MemRegion;
- private bool _aslrDisabled;
+ private bool AslrDisabled;
public int AddrSpaceWidth { get; private set; }
- private bool _isKernel;
- private bool _aslrEnabled;
+ private bool IsKernel;
+ private bool AslrEnabled;
- private KMemoryBlockAllocator _blockAllocator;
+ private KMemoryBlockAllocator BlockAllocator;
- private int _contextId;
+ private int ContextId;
- private MersenneTwister _randomNumberGenerator;
+ private MersenneTwister RandomNumberGenerator;
- public KMemoryManager(Horizon system, MemoryManager cpuMemory)
+ public KMemoryManager(Horizon System, MemoryManager CpuMemory)
{
- _system = system;
- _cpuMemory = cpuMemory;
+ this.System = System;
+ this.CpuMemory = CpuMemory;
- _blocks = new LinkedList<KMemoryBlock>();
+ Blocks = new LinkedList<KMemoryBlock>();
}
private static readonly int[] AddrSpaceSizes = new int[] { 32, 36, 32, 39 };
public KernelResult InitializeForProcess(
- AddressSpaceType addrSpaceType,
- bool aslrEnabled,
- bool aslrDisabled,
- MemoryRegion memRegion,
- ulong address,
- ulong size,
- KMemoryBlockAllocator blockAllocator)
+ AddressSpaceType AddrSpaceType,
+ bool AslrEnabled,
+ bool AslrDisabled,
+ MemoryRegion MemRegion,
+ ulong Address,
+ ulong Size,
+ KMemoryBlockAllocator BlockAllocator)
{
- if ((uint)addrSpaceType > (uint)AddressSpaceType.Addr39Bits)
+ if ((uint)AddrSpaceType > (uint)AddressSpaceType.Addr39Bits)
{
- throw new ArgumentException(nameof(addrSpaceType));
+ throw new ArgumentException(nameof(AddrSpaceType));
}
- _contextId = _system.ContextIdManager.GetId();
+ ContextId = System.ContextIdManager.GetId();
- ulong addrSpaceBase = 0;
- ulong addrSpaceSize = 1UL << AddrSpaceSizes[(int)addrSpaceType];
+ ulong AddrSpaceBase = 0;
+ ulong AddrSpaceSize = 1UL << AddrSpaceSizes[(int)AddrSpaceType];
- KernelResult result = CreateUserAddressSpace(
- addrSpaceType,
- aslrEnabled,
- aslrDisabled,
- addrSpaceBase,
- addrSpaceSize,
- memRegion,
- address,
- size,
- blockAllocator);
+ KernelResult Result = CreateUserAddressSpace(
+ AddrSpaceType,
+ AslrEnabled,
+ AslrDisabled,
+ AddrSpaceBase,
+ AddrSpaceSize,
+ MemRegion,
+ Address,
+ Size,
+ BlockAllocator);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- _system.ContextIdManager.PutId(_contextId);
+ System.ContextIdManager.PutId(ContextId);
}
- return result;
+ return Result;
}
private class Region
@@ -117,328 +117,328 @@ namespace Ryujinx.HLE.HOS.Kernel
}
private KernelResult CreateUserAddressSpace(
- AddressSpaceType addrSpaceType,
- bool aslrEnabled,
- bool aslrDisabled,
- ulong addrSpaceStart,
- ulong addrSpaceEnd,
- MemoryRegion memRegion,
- ulong address,
- ulong size,
- KMemoryBlockAllocator blockAllocator)
- {
- ulong endAddr = address + size;
-
- Region aliasRegion = new Region();
- Region heapRegion = new Region();
- Region stackRegion = new Region();
- Region tlsIoRegion = new Region();
-
- ulong codeRegionSize;
- ulong stackAndTlsIoStart;
- ulong stackAndTlsIoEnd;
- ulong baseAddress;
-
- switch (addrSpaceType)
+ AddressSpaceType AddrSpaceType,
+ bool AslrEnabled,
+ bool AslrDisabled,
+ ulong AddrSpaceStart,
+ ulong AddrSpaceEnd,
+ MemoryRegion MemRegion,
+ ulong Address,
+ ulong Size,
+ KMemoryBlockAllocator BlockAllocator)
+ {
+ ulong EndAddr = Address + Size;
+
+ Region AliasRegion = new Region();
+ Region HeapRegion = new Region();
+ Region StackRegion = new Region();
+ Region TlsIoRegion = new Region();
+
+ ulong CodeRegionSize;
+ ulong StackAndTlsIoStart;
+ ulong StackAndTlsIoEnd;
+ ulong BaseAddress;
+
+ switch (AddrSpaceType)
{
case AddressSpaceType.Addr32Bits:
- aliasRegion.Size = 0x40000000;
- heapRegion.Size = 0x40000000;
- stackRegion.Size = 0;
- tlsIoRegion.Size = 0;
+ AliasRegion.Size = 0x40000000;
+ HeapRegion.Size = 0x40000000;
+ StackRegion.Size = 0;
+ TlsIoRegion.Size = 0;
CodeRegionStart = 0x200000;
- codeRegionSize = 0x3fe00000;
- stackAndTlsIoStart = 0x200000;
- stackAndTlsIoEnd = 0x40000000;
- baseAddress = 0x200000;
+ CodeRegionSize = 0x3fe00000;
+ StackAndTlsIoStart = 0x200000;
+ StackAndTlsIoEnd = 0x40000000;
+ BaseAddress = 0x200000;
AddrSpaceWidth = 32;
break;
case AddressSpaceType.Addr36Bits:
- aliasRegion.Size = 0x180000000;
- heapRegion.Size = 0x180000000;
- stackRegion.Size = 0;
- tlsIoRegion.Size = 0;
+ AliasRegion.Size = 0x180000000;
+ HeapRegion.Size = 0x180000000;
+ StackRegion.Size = 0;
+ TlsIoRegion.Size = 0;
CodeRegionStart = 0x8000000;
- codeRegionSize = 0x78000000;
- stackAndTlsIoStart = 0x8000000;
- stackAndTlsIoEnd = 0x80000000;
- baseAddress = 0x8000000;
+ CodeRegionSize = 0x78000000;
+ StackAndTlsIoStart = 0x8000000;
+ StackAndTlsIoEnd = 0x80000000;
+ BaseAddress = 0x8000000;
AddrSpaceWidth = 36;
break;
case AddressSpaceType.Addr32BitsNoMap:
- aliasRegion.Size = 0;
- heapRegion.Size = 0x80000000;
- stackRegion.Size = 0;
- tlsIoRegion.Size = 0;
+ AliasRegion.Size = 0;
+ HeapRegion.Size = 0x80000000;
+ StackRegion.Size = 0;
+ TlsIoRegion.Size = 0;
CodeRegionStart = 0x200000;
- codeRegionSize = 0x3fe00000;
- stackAndTlsIoStart = 0x200000;
- stackAndTlsIoEnd = 0x40000000;
- baseAddress = 0x200000;
+ CodeRegionSize = 0x3fe00000;
+ StackAndTlsIoStart = 0x200000;
+ StackAndTlsIoEnd = 0x40000000;
+ BaseAddress = 0x200000;
AddrSpaceWidth = 32;
break;
case AddressSpaceType.Addr39Bits:
- aliasRegion.Size = 0x1000000000;
- heapRegion.Size = 0x180000000;
- stackRegion.Size = 0x80000000;
- tlsIoRegion.Size = 0x1000000000;
- CodeRegionStart = BitUtils.AlignDown(address, 0x200000);
- codeRegionSize = BitUtils.AlignUp (endAddr, 0x200000) - CodeRegionStart;
- stackAndTlsIoStart = 0;
- stackAndTlsIoEnd = 0;
- baseAddress = 0x8000000;
+ AliasRegion.Size = 0x1000000000;
+ HeapRegion.Size = 0x180000000;
+ StackRegion.Size = 0x80000000;
+ TlsIoRegion.Size = 0x1000000000;
+ CodeRegionStart = BitUtils.AlignDown(Address, 0x200000);
+ CodeRegionSize = BitUtils.AlignUp (EndAddr, 0x200000) - CodeRegionStart;
+ StackAndTlsIoStart = 0;
+ StackAndTlsIoEnd = 0;
+ BaseAddress = 0x8000000;
AddrSpaceWidth = 39;
break;
- default: throw new ArgumentException(nameof(addrSpaceType));
+ default: throw new ArgumentException(nameof(AddrSpaceType));
}
- CodeRegionEnd = CodeRegionStart + codeRegionSize;
+ CodeRegionEnd = CodeRegionStart + CodeRegionSize;
- ulong mapBaseAddress;
- ulong mapAvailableSize;
+ ulong MapBaseAddress;
+ ulong MapAvailableSize;
- if (CodeRegionStart - baseAddress >= addrSpaceEnd - CodeRegionEnd)
+ if (CodeRegionStart - BaseAddress >= AddrSpaceEnd - CodeRegionEnd)
{
//Has more space before the start of the code region.
- mapBaseAddress = baseAddress;
- mapAvailableSize = CodeRegionStart - baseAddress;
+ MapBaseAddress = BaseAddress;
+ MapAvailableSize = CodeRegionStart - BaseAddress;
}
else
{
//Has more space after the end of the code region.
- mapBaseAddress = CodeRegionEnd;
- mapAvailableSize = addrSpaceEnd - CodeRegionEnd;
+ MapBaseAddress = CodeRegionEnd;
+ MapAvailableSize = AddrSpaceEnd - CodeRegionEnd;
}
- ulong mapTotalSize = aliasRegion.Size + heapRegion.Size + stackRegion.Size + tlsIoRegion.Size;
+ ulong MapTotalSize = AliasRegion.Size + HeapRegion.Size + StackRegion.Size + TlsIoRegion.Size;
- ulong aslrMaxOffset = mapAvailableSize - mapTotalSize;
+ ulong AslrMaxOffset = MapAvailableSize - MapTotalSize;
- _aslrEnabled = aslrEnabled;
+ this.AslrEnabled = AslrEnabled;
- AddrSpaceStart = addrSpaceStart;
- AddrSpaceEnd = addrSpaceEnd;
+ this.AddrSpaceStart = AddrSpaceStart;
+ this.AddrSpaceEnd = AddrSpaceEnd;
- _blockAllocator = blockAllocator;
+ this.BlockAllocator = BlockAllocator;
- if (mapAvailableSize < mapTotalSize)
+ if (MapAvailableSize < MapTotalSize)
{
return KernelResult.OutOfMemory;
}
- if (aslrEnabled)
+ if (AslrEnabled)
{
- aliasRegion.AslrOffset = GetRandomValue(0, aslrMaxOffset >> 21) << 21;
- heapRegion.AslrOffset = GetRandomValue(0, aslrMaxOffset >> 21) << 21;
- stackRegion.AslrOffset = GetRandomValue(0, aslrMaxOffset >> 21) << 21;
- tlsIoRegion.AslrOffset = GetRandomValue(0, aslrMaxOffset >> 21) << 21;
+ AliasRegion.AslrOffset = GetRandomValue(0, AslrMaxOffset >> 21) << 21;
+ HeapRegion.AslrOffset = GetRandomValue(0, AslrMaxOffset >> 21) << 21;
+ StackRegion.AslrOffset = GetRandomValue(0, AslrMaxOffset >> 21) << 21;
+ TlsIoRegion.AslrOffset = GetRandomValue(0, AslrMaxOffset >> 21) << 21;
}
//Regions are sorted based on ASLR offset.
//When ASLR is disabled, the order is Map, Heap, NewMap and TlsIo.
- aliasRegion.Start = mapBaseAddress + aliasRegion.AslrOffset;
- aliasRegion.End = aliasRegion.Start + aliasRegion.Size;
- heapRegion.Start = mapBaseAddress + heapRegion.AslrOffset;
- heapRegion.End = heapRegion.Start + heapRegion.Size;
- stackRegion.Start = mapBaseAddress + stackRegion.AslrOffset;
- stackRegion.End = stackRegion.Start + stackRegion.Size;
- tlsIoRegion.Start = mapBaseAddress + tlsIoRegion.AslrOffset;
- tlsIoRegion.End = tlsIoRegion.Start + tlsIoRegion.Size;
+ AliasRegion.Start = MapBaseAddress + AliasRegion.AslrOffset;
+ AliasRegion.End = AliasRegion.Start + AliasRegion.Size;
+ HeapRegion.Start = MapBaseAddress + HeapRegion.AslrOffset;
+ HeapRegion.End = HeapRegion.Start + HeapRegion.Size;
+ StackRegion.Start = MapBaseAddress + StackRegion.AslrOffset;
+ StackRegion.End = StackRegion.Start + StackRegion.Size;
+ TlsIoRegion.Start = MapBaseAddress + TlsIoRegion.AslrOffset;
+ TlsIoRegion.End = TlsIoRegion.Start + TlsIoRegion.Size;
- SortRegion(heapRegion, aliasRegion);
+ SortRegion(HeapRegion, AliasRegion);
- if (stackRegion.Size != 0)
+ if (StackRegion.Size != 0)
{
- SortRegion(stackRegion, aliasRegion);
- SortRegion(stackRegion, heapRegion);
+ SortRegion(StackRegion, AliasRegion);
+ SortRegion(StackRegion, HeapRegion);
}
else
{
- stackRegion.Start = stackAndTlsIoStart;
- stackRegion.End = stackAndTlsIoEnd;
+ StackRegion.Start = StackAndTlsIoStart;
+ StackRegion.End = StackAndTlsIoEnd;
}
- if (tlsIoRegion.Size != 0)
+ if (TlsIoRegion.Size != 0)
{
- SortRegion(tlsIoRegion, aliasRegion);
- SortRegion(tlsIoRegion, heapRegion);
- SortRegion(tlsIoRegion, stackRegion);
+ SortRegion(TlsIoRegion, AliasRegion);
+ SortRegion(TlsIoRegion, HeapRegion);
+ SortRegion(TlsIoRegion, StackRegion);
}
else
{
- tlsIoRegion.Start = stackAndTlsIoStart;
- tlsIoRegion.End = stackAndTlsIoEnd;
+ TlsIoRegion.Start = StackAndTlsIoStart;
+ TlsIoRegion.End = StackAndTlsIoEnd;
}
- AliasRegionStart = aliasRegion.Start;
- AliasRegionEnd = aliasRegion.End;
- HeapRegionStart = heapRegion.Start;
- HeapRegionEnd = heapRegion.End;
- StackRegionStart = stackRegion.Start;
- StackRegionEnd = stackRegion.End;
- TlsIoRegionStart = tlsIoRegion.Start;
- TlsIoRegionEnd = tlsIoRegion.End;
+ AliasRegionStart = AliasRegion.Start;
+ AliasRegionEnd = AliasRegion.End;
+ HeapRegionStart = HeapRegion.Start;
+ HeapRegionEnd = HeapRegion.End;
+ StackRegionStart = StackRegion.Start;
+ StackRegionEnd = StackRegion.End;
+ TlsIoRegionStart = TlsIoRegion.Start;
+ TlsIoRegionEnd = TlsIoRegion.End;
- _currentHeapAddr = HeapRegionStart;
- _heapCapacity = 0;
+ CurrentHeapAddr = HeapRegionStart;
+ HeapCapacity = 0;
PhysicalMemoryUsage = 0;
- _memRegion = memRegion;
- _aslrDisabled = aslrDisabled;
+ this.MemRegion = MemRegion;
+ this.AslrDisabled = AslrDisabled;
- return InitializeBlocks(addrSpaceStart, addrSpaceEnd);
+ return InitializeBlocks(AddrSpaceStart, AddrSpaceEnd);
}
- private ulong GetRandomValue(ulong min, ulong max)
+ private ulong GetRandomValue(ulong Min, ulong Max)
{
- return (ulong)GetRandomValue((long)min, (long)max);
+ return (ulong)GetRandomValue((long)Min, (long)Max);
}
- private long GetRandomValue(long min, long max)
+ private long GetRandomValue(long Min, long Max)
{
- if (_randomNumberGenerator == null)
+ if (RandomNumberGenerator == null)
{
- _randomNumberGenerator = new MersenneTwister(0);
+ RandomNumberGenerator = new MersenneTwister(0);
}
- return _randomNumberGenerator.GenRandomNumber(min, max);
+ return RandomNumberGenerator.GenRandomNumber(Min, Max);
}
- private static void SortRegion(Region lhs, Region rhs)
+ private static void SortRegion(Region Lhs, Region Rhs)
{
- if (lhs.AslrOffset < rhs.AslrOffset)
+ if (Lhs.AslrOffset < Rhs.AslrOffset)
{
- rhs.Start += lhs.Size;
- rhs.End += lhs.Size;
+ Rhs.Start += Lhs.Size;
+ Rhs.End += Lhs.Size;
}
else
{
- lhs.Start += rhs.Size;
- lhs.End += rhs.Size;
+ Lhs.Start += Rhs.Size;
+ Lhs.End += Rhs.Size;
}
}
- private KernelResult InitializeBlocks(ulong addrSpaceStart, ulong addrSpaceEnd)
+ private KernelResult InitializeBlocks(ulong AddrSpaceStart, ulong AddrSpaceEnd)
{
//First insertion will always need only a single block,
//because there's nothing else to split.
- if (!_blockAllocator.CanAllocate(1))
+ if (!BlockAllocator.CanAllocate(1))
{
return KernelResult.OutOfResource;
}
- ulong addrSpacePagesCount = (addrSpaceEnd - addrSpaceStart) / PageSize;
+ ulong AddrSpacePagesCount = (AddrSpaceEnd - AddrSpaceStart) / PageSize;
- InsertBlock(addrSpaceStart, addrSpacePagesCount, MemoryState.Unmapped);
+ InsertBlock(AddrSpaceStart, AddrSpacePagesCount, MemoryState.Unmapped);
return KernelResult.Success;
}
public KernelResult MapPages(
- ulong address,
- KPageList pageList,
- MemoryState state,
- MemoryPermission permission)
+ ulong Address,
+ KPageList PageList,
+ MemoryState State,
+ MemoryPermission Permission)
{
- ulong pagesCount = pageList.GetPagesCount();
+ ulong PagesCount = PageList.GetPagesCount();
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- if (!ValidateRegionForState(address, size, state))
+ if (!ValidateRegionForState(Address, Size, State))
{
return KernelResult.InvalidMemState;
}
- lock (_blocks)
+ lock (Blocks)
{
- if (!IsUnmapped(address, pagesCount * PageSize))
+ if (!IsUnmapped(Address, PagesCount * PageSize))
{
return KernelResult.InvalidMemState;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- KernelResult result = MapPages(address, pageList, permission);
+ KernelResult Result = MapPages(Address, PageList, Permission);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- InsertBlock(address, pagesCount, state, permission);
+ InsertBlock(Address, PagesCount, State, Permission);
}
- return result;
+ return Result;
}
}
- public KernelResult UnmapPages(ulong address, KPageList pageList, MemoryState stateExpected)
+ public KernelResult UnmapPages(ulong Address, KPageList PageList, MemoryState StateExpected)
{
- ulong pagesCount = pageList.GetPagesCount();
+ ulong PagesCount = PageList.GetPagesCount();
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- ulong endAddr = address + size;
+ ulong EndAddr = Address + Size;
- ulong addrSpacePagesCount = (AddrSpaceEnd - AddrSpaceStart) / PageSize;
+ ulong AddrSpacePagesCount = (AddrSpaceEnd - AddrSpaceStart) / PageSize;
- if (AddrSpaceStart > address)
+ if (AddrSpaceStart > Address)
{
return KernelResult.InvalidMemState;
}
- if (addrSpacePagesCount < pagesCount)
+ if (AddrSpacePagesCount < PagesCount)
{
return KernelResult.InvalidMemState;
}
- if (endAddr - 1 > AddrSpaceEnd - 1)
+ if (EndAddr - 1 > AddrSpaceEnd - 1)
{
return KernelResult.InvalidMemState;
}
- lock (_blocks)
+ lock (Blocks)
{
- KPageList currentPageList = new KPageList();
+ KPageList CurrentPageList = new KPageList();
- AddVaRangeToPageList(currentPageList, address, pagesCount);
+ AddVaRangeToPageList(CurrentPageList, Address, PagesCount);
- if (!currentPageList.IsEqual(pageList))
+ if (!CurrentPageList.IsEqual(PageList))
{
return KernelResult.InvalidMemRange;
}
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.Mask,
- stateExpected,
+ StateExpected,
MemoryPermission.None,
MemoryPermission.None,
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState state,
+ out MemoryState State,
out _,
out _))
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- KernelResult result = MmuUnmap(address, pagesCount);
+ KernelResult Result = MmuUnmap(Address, PagesCount);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- InsertBlock(address, pagesCount, MemoryState.Unmapped);
+ InsertBlock(Address, PagesCount, MemoryState.Unmapped);
}
- return result;
+ return Result;
}
else
{
@@ -447,191 +447,191 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult MapNormalMemory(long address, long size, MemoryPermission permission)
+ public KernelResult MapNormalMemory(long Address, long Size, MemoryPermission Permission)
{
//TODO.
return KernelResult.Success;
}
- public KernelResult MapIoMemory(long address, long size, MemoryPermission permission)
+ public KernelResult MapIoMemory(long Address, long Size, MemoryPermission Permission)
{
//TODO.
return KernelResult.Success;
}
public KernelResult AllocateOrMapPa(
- ulong neededPagesCount,
- int alignment,
- ulong srcPa,
- bool map,
- ulong regionStart,
- ulong regionPagesCount,
- MemoryState state,
- MemoryPermission permission,
- out ulong address)
+ ulong NeededPagesCount,
+ int Alignment,
+ ulong SrcPa,
+ bool Map,
+ ulong RegionStart,
+ ulong RegionPagesCount,
+ MemoryState State,
+ MemoryPermission Permission,
+ out ulong Address)
{
- address = 0;
+ Address = 0;
- ulong regionSize = regionPagesCount * PageSize;
+ ulong RegionSize = RegionPagesCount * PageSize;
- ulong regionEndAddr = regionStart + regionSize;
+ ulong RegionEndAddr = RegionStart + RegionSize;
- if (!ValidateRegionForState(regionStart, regionSize, state))
+ if (!ValidateRegionForState(RegionStart, RegionSize, State))
{
return KernelResult.InvalidMemState;
}
- if (regionPagesCount <= neededPagesCount)
+ if (RegionPagesCount <= NeededPagesCount)
{
return KernelResult.OutOfMemory;
}
- ulong reservedPagesCount = _isKernel ? 1UL : 4UL;
+ ulong ReservedPagesCount = IsKernel ? 1UL : 4UL;
- lock (_blocks)
+ lock (Blocks)
{
- if (_aslrEnabled)
+ if (AslrEnabled)
{
- ulong totalNeededSize = (reservedPagesCount + neededPagesCount) * PageSize;
+ ulong TotalNeededSize = (ReservedPagesCount + NeededPagesCount) * PageSize;
- ulong remainingPages = regionPagesCount - neededPagesCount;
+ ulong RemainingPages = RegionPagesCount - NeededPagesCount;
- ulong aslrMaxOffset = ((remainingPages + reservedPagesCount) * PageSize) / (ulong)alignment;
+ ulong AslrMaxOffset = ((RemainingPages + ReservedPagesCount) * PageSize) / (ulong)Alignment;
- for (int attempt = 0; attempt < 8; attempt++)
+ for (int Attempt = 0; Attempt < 8; Attempt++)
{
- address = BitUtils.AlignDown(regionStart + GetRandomValue(0, aslrMaxOffset) * (ulong)alignment, alignment);
+ Address = BitUtils.AlignDown(RegionStart + GetRandomValue(0, AslrMaxOffset) * (ulong)Alignment, Alignment);
- ulong endAddr = address + totalNeededSize;
+ ulong EndAddr = Address + TotalNeededSize;
- KMemoryInfo info = FindBlock(address).GetInfo();
+ KMemoryInfo Info = FindBlock(Address).GetInfo();
- if (info.State != MemoryState.Unmapped)
+ if (Info.State != MemoryState.Unmapped)
{
continue;
}
- ulong currBaseAddr = info.Address + reservedPagesCount * PageSize;
- ulong currEndAddr = info.Address + info.Size;
+ ulong CurrBaseAddr = Info.Address + ReservedPagesCount * PageSize;
+ ulong CurrEndAddr = Info.Address + Info.Size;
- if (address >= regionStart &&
- address >= currBaseAddr &&
- endAddr - 1 <= regionEndAddr - 1 &&
- endAddr - 1 <= currEndAddr - 1)
+ if (Address >= RegionStart &&
+ Address >= CurrBaseAddr &&
+ EndAddr - 1 <= RegionEndAddr - 1 &&
+ EndAddr - 1 <= CurrEndAddr - 1)
{
break;
}
}
- if (address == 0)
+ if (Address == 0)
{
- ulong aslrPage = GetRandomValue(0, aslrMaxOffset);
+ ulong AslrPage = GetRandomValue(0, AslrMaxOffset);
- address = FindFirstFit(
- regionStart + aslrPage * PageSize,
- regionPagesCount - aslrPage,
- neededPagesCount,
- alignment,
+ Address = FindFirstFit(
+ RegionStart + AslrPage * PageSize,
+ RegionPagesCount - AslrPage,
+ NeededPagesCount,
+ Alignment,
0,
- reservedPagesCount);
+ ReservedPagesCount);
}
}
- if (address == 0)
+ if (Address == 0)
{
- address = FindFirstFit(
- regionStart,
- regionPagesCount,
- neededPagesCount,
- alignment,
+ Address = FindFirstFit(
+ RegionStart,
+ RegionPagesCount,
+ NeededPagesCount,
+ Alignment,
0,
- reservedPagesCount);
+ ReservedPagesCount);
}
- if (address == 0)
+ if (Address == 0)
{
return KernelResult.OutOfMemory;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- MemoryOperation operation = map
+ MemoryOperation Operation = Map
? MemoryOperation.MapPa
: MemoryOperation.Allocate;
- KernelResult result = DoMmuOperation(
- address,
- neededPagesCount,
- srcPa,
- map,
- permission,
- operation);
+ KernelResult Result = DoMmuOperation(
+ Address,
+ NeededPagesCount,
+ SrcPa,
+ Map,
+ Permission,
+ Operation);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- InsertBlock(address, neededPagesCount, state, permission);
+ InsertBlock(Address, NeededPagesCount, State, Permission);
}
return KernelResult.Success;
}
public KernelResult MapNewProcessCode(
- ulong address,
- ulong pagesCount,
- MemoryState state,
- MemoryPermission permission)
+ ulong Address,
+ ulong PagesCount,
+ MemoryState State,
+ MemoryPermission Permission)
{
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- if (!ValidateRegionForState(address, size, state))
+ if (!ValidateRegionForState(Address, Size, State))
{
return KernelResult.InvalidMemState;
}
- lock (_blocks)
+ lock (Blocks)
{
- if (!IsUnmapped(address, size))
+ if (!IsUnmapped(Address, Size))
{
return KernelResult.InvalidMemState;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- KernelResult result = DoMmuOperation(
- address,
- pagesCount,
+ KernelResult Result = DoMmuOperation(
+ Address,
+ PagesCount,
0,
false,
- permission,
+ Permission,
MemoryOperation.Allocate);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- InsertBlock(address, pagesCount, state, permission);
+ InsertBlock(Address, PagesCount, State, Permission);
}
- return result;
+ return Result;
}
}
- public KernelResult MapProcessCodeMemory(ulong dst, ulong src, ulong size)
+ public KernelResult MapProcessCodeMemory(ulong Dst, ulong Src, ulong Size)
{
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- lock (_blocks)
+ lock (Blocks)
{
- bool success = CheckRange(
- src,
- size,
+ bool Success = CheckRange(
+ Src,
+ Size,
MemoryState.Mask,
MemoryState.Heap,
MemoryPermission.Mask,
@@ -639,41 +639,41 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState state,
- out MemoryPermission permission,
+ out MemoryState State,
+ out MemoryPermission Permission,
out _);
- success &= IsUnmapped(dst, size);
+ Success &= IsUnmapped(Dst, Size);
- if (success)
+ if (Success)
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
{
return KernelResult.OutOfResource;
}
- KPageList pageList = new KPageList();
+ KPageList PageList = new KPageList();
- AddVaRangeToPageList(pageList, src, pagesCount);
+ AddVaRangeToPageList(PageList, Src, PagesCount);
- KernelResult result = MmuChangePermission(src, pagesCount, MemoryPermission.None);
+ KernelResult Result = MmuChangePermission(Src, PagesCount, MemoryPermission.None);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- result = MapPages(dst, pageList, MemoryPermission.None);
+ Result = MapPages(Dst, PageList, MemoryPermission.None);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- MmuChangePermission(src, pagesCount, permission);
+ MmuChangePermission(Src, PagesCount, Permission);
- return result;
+ return Result;
}
- InsertBlock(src, pagesCount, state, MemoryPermission.None, MemoryAttribute.Borrowed);
- InsertBlock(dst, pagesCount, MemoryState.ModCodeStatic);
+ InsertBlock(Src, PagesCount, State, MemoryPermission.None, MemoryAttribute.Borrowed);
+ InsertBlock(Dst, PagesCount, MemoryState.ModCodeStatic);
return KernelResult.Success;
}
@@ -684,15 +684,15 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult UnmapProcessCodeMemory(ulong dst, ulong src, ulong size)
+ public KernelResult UnmapProcessCodeMemory(ulong Dst, ulong Src, ulong Size)
{
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- lock (_blocks)
+ lock (Blocks)
{
- bool success = CheckRange(
- src,
- size,
+ bool Success = CheckRange(
+ Src,
+ Size,
MemoryState.Mask,
MemoryState.Heap,
MemoryPermission.None,
@@ -704,8 +704,8 @@ namespace Ryujinx.HLE.HOS.Kernel
out _,
out _);
- success &= CheckRange(
- dst,
+ Success &= CheckRange(
+ Dst,
PageSize,
MemoryState.UnmapProcessCodeMemoryAllowed,
MemoryState.UnmapProcessCodeMemoryAllowed,
@@ -714,38 +714,38 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState state,
+ out MemoryState State,
out _,
out _);
- success &= CheckRange(
- dst,
- size,
+ Success &= CheckRange(
+ Dst,
+ Size,
MemoryState.Mask,
- state,
+ State,
MemoryPermission.None,
MemoryPermission.None,
MemoryAttribute.Mask,
MemoryAttribute.None);
- if (success)
+ if (Success)
{
- KernelResult result = MmuUnmap(dst, pagesCount);
+ KernelResult Result = MmuUnmap(Dst, PagesCount);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
//TODO: Missing some checks here.
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
{
return KernelResult.OutOfResource;
}
- InsertBlock(dst, pagesCount, MemoryState.Unmapped);
- InsertBlock(src, pagesCount, MemoryState.Heap, MemoryPermission.ReadAndWrite);
+ InsertBlock(Dst, PagesCount, MemoryState.Unmapped);
+ InsertBlock(Src, PagesCount, MemoryState.Heap, MemoryPermission.ReadAndWrite);
return KernelResult.Success;
}
@@ -756,105 +756,105 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult SetHeapSize(ulong size, out ulong address)
+ public KernelResult SetHeapSize(ulong Size, out ulong Address)
{
- address = 0;
+ Address = 0;
- if (size > HeapRegionEnd - HeapRegionStart)
+ if (Size > HeapRegionEnd - HeapRegionStart)
{
return KernelResult.OutOfMemory;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- ulong currentHeapSize = GetHeapSize();
+ ulong CurrentHeapSize = GetHeapSize();
- if (currentHeapSize <= size)
+ if (CurrentHeapSize <= Size)
{
//Expand.
- ulong diffSize = size - currentHeapSize;
+ ulong DiffSize = Size - CurrentHeapSize;
- lock (_blocks)
+ lock (Blocks)
{
- if (currentProcess.ResourceLimit != null && diffSize != 0 &&
- !currentProcess.ResourceLimit.Reserve(LimitableResource.Memory, diffSize))
+ if (CurrentProcess.ResourceLimit != null && DiffSize != 0 &&
+ !CurrentProcess.ResourceLimit.Reserve(LimitableResource.Memory, DiffSize))
{
return KernelResult.ResLimitExceeded;
}
- ulong pagesCount = diffSize / PageSize;
+ ulong PagesCount = DiffSize / PageSize;
- KMemoryRegionManager region = GetMemoryRegionManager();
+ KMemoryRegionManager Region = GetMemoryRegionManager();
- KernelResult result = region.AllocatePages(pagesCount, _aslrDisabled, out KPageList pageList);
+ KernelResult Result = Region.AllocatePages(PagesCount, AslrDisabled, out KPageList PageList);
void CleanUpForError()
{
- if (pageList != null)
+ if (PageList != null)
{
- region.FreePages(pageList);
+ Region.FreePages(PageList);
}
- if (currentProcess.ResourceLimit != null && diffSize != 0)
+ if (CurrentProcess.ResourceLimit != null && DiffSize != 0)
{
- currentProcess.ResourceLimit.Release(LimitableResource.Memory, diffSize);
+ CurrentProcess.ResourceLimit.Release(LimitableResource.Memory, DiffSize);
}
}
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
CleanUpForError();
return KernelResult.OutOfResource;
}
- if (!IsUnmapped(_currentHeapAddr, diffSize))
+ if (!IsUnmapped(CurrentHeapAddr, DiffSize))
{
CleanUpForError();
return KernelResult.InvalidMemState;
}
- result = DoMmuOperation(
- _currentHeapAddr,
- pagesCount,
- pageList,
+ Result = DoMmuOperation(
+ CurrentHeapAddr,
+ PagesCount,
+ PageList,
MemoryPermission.ReadAndWrite,
MemoryOperation.MapVa);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- InsertBlock(_currentHeapAddr, pagesCount, MemoryState.Heap, MemoryPermission.ReadAndWrite);
+ InsertBlock(CurrentHeapAddr, PagesCount, MemoryState.Heap, MemoryPermission.ReadAndWrite);
}
}
else
{
//Shrink.
- ulong freeAddr = HeapRegionStart + size;
- ulong diffSize = currentHeapSize - size;
+ ulong FreeAddr = HeapRegionStart + Size;
+ ulong DiffSize = CurrentHeapSize - Size;
- lock (_blocks)
+ lock (Blocks)
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
if (!CheckRange(
- freeAddr,
- diffSize,
+ FreeAddr,
+ DiffSize,
MemoryState.Mask,
MemoryState.Heap,
MemoryPermission.Mask,
@@ -869,31 +869,31 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.InvalidMemState;
}
- ulong pagesCount = diffSize / PageSize;
+ ulong PagesCount = DiffSize / PageSize;
- KernelResult result = MmuUnmap(freeAddr, pagesCount);
+ KernelResult Result = MmuUnmap(FreeAddr, PagesCount);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- currentProcess.ResourceLimit?.Release(LimitableResource.Memory, BitUtils.AlignDown(diffSize, PageSize));
+ CurrentProcess.ResourceLimit?.Release(LimitableResource.Memory, BitUtils.AlignDown(DiffSize, PageSize));
- InsertBlock(freeAddr, pagesCount, MemoryState.Unmapped);
+ InsertBlock(FreeAddr, PagesCount, MemoryState.Unmapped);
}
}
- _currentHeapAddr = HeapRegionStart + size;
+ CurrentHeapAddr = HeapRegionStart + Size;
- address = HeapRegionStart;
+ Address = HeapRegionStart;
return KernelResult.Success;
}
public ulong GetTotalHeapSize()
{
- lock (_blocks)
+ lock (Blocks)
{
return GetHeapSize() + PhysicalMemoryUsage;
}
@@ -901,30 +901,30 @@ namespace Ryujinx.HLE.HOS.Kernel
private ulong GetHeapSize()
{
- return _currentHeapAddr - HeapRegionStart;
+ return CurrentHeapAddr - HeapRegionStart;
}
- public KernelResult SetHeapCapacity(ulong capacity)
+ public KernelResult SetHeapCapacity(ulong Capacity)
{
- lock (_blocks)
+ lock (Blocks)
{
- _heapCapacity = capacity;
+ HeapCapacity = Capacity;
}
return KernelResult.Success;
}
public KernelResult SetMemoryAttribute(
- ulong address,
- ulong size,
- MemoryAttribute attributeMask,
- MemoryAttribute attributeValue)
+ ulong Address,
+ ulong Size,
+ MemoryAttribute AttributeMask,
+ MemoryAttribute AttributeValue)
{
- lock (_blocks)
+ lock (Blocks)
{
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.AttributeChangeAllowed,
MemoryState.AttributeChangeAllowed,
MemoryPermission.None,
@@ -932,21 +932,21 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.BorrowedAndIpcMapped,
MemoryAttribute.None,
MemoryAttribute.DeviceMappedAndUncached,
- out MemoryState state,
- out MemoryPermission permission,
- out MemoryAttribute attribute))
+ out MemoryState State,
+ out MemoryPermission Permission,
+ out MemoryAttribute Attribute))
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- attribute &= ~attributeMask;
- attribute |= attributeMask & attributeValue;
+ Attribute &= ~AttributeMask;
+ Attribute |= AttributeMask & AttributeValue;
- InsertBlock(address, pagesCount, state, permission, attribute);
+ InsertBlock(Address, PagesCount, State, Permission, Attribute);
return KernelResult.Success;
}
@@ -957,14 +957,14 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KMemoryInfo QueryMemory(ulong address)
+ public KMemoryInfo QueryMemory(ulong Address)
{
- if (address >= AddrSpaceStart &&
- address < AddrSpaceEnd)
+ if (Address >= AddrSpaceStart &&
+ Address < AddrSpaceEnd)
{
- lock (_blocks)
+ lock (Blocks)
{
- return FindBlock(address).GetInfo();
+ return FindBlock(Address).GetInfo();
}
}
else
@@ -980,15 +980,15 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult Map(ulong dst, ulong src, ulong size)
+ public KernelResult Map(ulong Dst, ulong Src, ulong Size)
{
- bool success;
+ bool Success;
- lock (_blocks)
+ lock (Blocks)
{
- success = CheckRange(
- src,
- size,
+ Success = CheckRange(
+ Src,
+ Size,
MemoryState.MapAllowed,
MemoryState.MapAllowed,
MemoryPermission.Mask,
@@ -996,46 +996,46 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState srcState,
+ out MemoryState SrcState,
out _,
out _);
- success &= IsUnmapped(dst, size);
+ Success &= IsUnmapped(Dst, Size);
- if (success)
+ if (Success)
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- KPageList pageList = new KPageList();
+ KPageList PageList = new KPageList();
- AddVaRangeToPageList(pageList, src, pagesCount);
+ AddVaRangeToPageList(PageList, Src, PagesCount);
- KernelResult result = MmuChangePermission(src, pagesCount, MemoryPermission.None);
+ KernelResult Result = MmuChangePermission(Src, PagesCount, MemoryPermission.None);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- result = MapPages(dst, pageList, MemoryPermission.ReadAndWrite);
+ Result = MapPages(Dst, PageList, MemoryPermission.ReadAndWrite);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- if (MmuChangePermission(src, pagesCount, MemoryPermission.ReadAndWrite) != KernelResult.Success)
+ if (MmuChangePermission(Src, PagesCount, MemoryPermission.ReadAndWrite) != KernelResult.Success)
{
throw new InvalidOperationException("Unexpected failure reverting memory permission.");
}
- return result;
+ return Result;
}
- InsertBlock(src, pagesCount, srcState, MemoryPermission.None, MemoryAttribute.Borrowed);
- InsertBlock(dst, pagesCount, MemoryState.Stack, MemoryPermission.ReadAndWrite);
+ InsertBlock(Src, PagesCount, SrcState, MemoryPermission.None, MemoryAttribute.Borrowed);
+ InsertBlock(Dst, PagesCount, MemoryState.Stack, MemoryPermission.ReadAndWrite);
return KernelResult.Success;
}
@@ -1046,17 +1046,17 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult UnmapForKernel(ulong address, ulong pagesCount, MemoryState stateExpected)
+ public KernelResult UnmapForKernel(ulong Address, ulong PagesCount, MemoryState StateExpected)
{
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- lock (_blocks)
+ lock (Blocks)
{
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.Mask,
- stateExpected,
+ StateExpected,
MemoryPermission.None,
MemoryPermission.None,
MemoryAttribute.Mask,
@@ -1066,16 +1066,16 @@ namespace Ryujinx.HLE.HOS.Kernel
out _,
out _))
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- KernelResult result = MmuUnmap(address, pagesCount);
+ KernelResult Result = MmuUnmap(Address, PagesCount);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- InsertBlock(address, pagesCount, MemoryState.Unmapped);
+ InsertBlock(Address, PagesCount, MemoryState.Unmapped);
}
return KernelResult.Success;
@@ -1087,15 +1087,15 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult Unmap(ulong dst, ulong src, ulong size)
+ public KernelResult Unmap(ulong Dst, ulong Src, ulong Size)
{
- bool success;
+ bool Success;
- lock (_blocks)
+ lock (Blocks)
{
- success = CheckRange(
- src,
- size,
+ Success = CheckRange(
+ Src,
+ Size,
MemoryState.MapAllowed,
MemoryState.MapAllowed,
MemoryPermission.Mask,
@@ -1103,13 +1103,13 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.Borrowed,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState srcState,
+ out MemoryState SrcState,
out _,
out _);
- success &= CheckRange(
- dst,
- size,
+ Success &= CheckRange(
+ Dst,
+ Size,
MemoryState.Mask,
MemoryState.Stack,
MemoryPermission.None,
@@ -1118,47 +1118,47 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
out _,
- out MemoryPermission dstPermission,
+ out MemoryPermission DstPermission,
out _);
- if (success)
+ if (Success)
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion * 2))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- KPageList srcPageList = new KPageList();
- KPageList dstPageList = new KPageList();
+ KPageList SrcPageList = new KPageList();
+ KPageList DstPageList = new KPageList();
- AddVaRangeToPageList(srcPageList, src, pagesCount);
- AddVaRangeToPageList(dstPageList, dst, pagesCount);
+ AddVaRangeToPageList(SrcPageList, Src, PagesCount);
+ AddVaRangeToPageList(DstPageList, Dst, PagesCount);
- if (!dstPageList.IsEqual(srcPageList))
+ if (!DstPageList.IsEqual(SrcPageList))
{
return KernelResult.InvalidMemRange;
}
- KernelResult result = MmuUnmap(dst, pagesCount);
+ KernelResult Result = MmuUnmap(Dst, PagesCount);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- result = MmuChangePermission(src, pagesCount, MemoryPermission.ReadAndWrite);
+ Result = MmuChangePermission(Src, PagesCount, MemoryPermission.ReadAndWrite);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- MapPages(dst, dstPageList, dstPermission);
+ MapPages(Dst, DstPageList, DstPermission);
- return result;
+ return Result;
}
- InsertBlock(src, pagesCount, srcState, MemoryPermission.ReadAndWrite);
- InsertBlock(dst, pagesCount, MemoryState.Unmapped);
+ InsertBlock(Src, PagesCount, SrcState, MemoryPermission.ReadAndWrite);
+ InsertBlock(Dst, PagesCount, MemoryState.Unmapped);
return KernelResult.Success;
}
@@ -1169,13 +1169,13 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult ReserveTransferMemory(ulong address, ulong size, MemoryPermission permission)
+ public KernelResult ReserveTransferMemory(ulong Address, ulong Size, MemoryPermission Permission)
{
- lock (_blocks)
+ lock (Blocks)
{
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.TransferMemoryAllowed | MemoryState.IsPoolAllocated,
MemoryState.TransferMemoryAllowed | MemoryState.IsPoolAllocated,
MemoryPermission.Mask,
@@ -1183,22 +1183,22 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState state,
+ out MemoryState State,
out _,
- out MemoryAttribute attribute))
+ out MemoryAttribute Attribute))
{
//TODO: Missing checks.
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- attribute |= MemoryAttribute.Borrowed;
+ Attribute |= MemoryAttribute.Borrowed;
- InsertBlock(address, pagesCount, state, permission, attribute);
+ InsertBlock(Address, PagesCount, State, Permission, Attribute);
return KernelResult.Success;
}
@@ -1209,13 +1209,13 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult ResetTransferMemory(ulong address, ulong size)
+ public KernelResult ResetTransferMemory(ulong Address, ulong Size)
{
- lock (_blocks)
+ lock (Blocks)
{
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.TransferMemoryAllowed | MemoryState.IsPoolAllocated,
MemoryState.TransferMemoryAllowed | MemoryState.IsPoolAllocated,
MemoryPermission.None,
@@ -1223,18 +1223,18 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.Borrowed,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState state,
+ out MemoryState State,
out _,
out _))
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- InsertBlock(address, pagesCount, state, MemoryPermission.ReadAndWrite);
+ InsertBlock(Address, PagesCount, State, MemoryPermission.ReadAndWrite);
return KernelResult.Success;
}
@@ -1245,13 +1245,13 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult SetProcessMemoryPermission(ulong address, ulong size, MemoryPermission permission)
+ public KernelResult SetProcessMemoryPermission(ulong Address, ulong Size, MemoryPermission Permission)
{
- lock (_blocks)
+ lock (Blocks)
{
if (CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.ProcessPermissionChangeAllowed,
MemoryState.ProcessPermissionChangeAllowed,
MemoryPermission.None,
@@ -1259,51 +1259,51 @@ namespace Ryujinx.HLE.HOS.Kernel
MemoryAttribute.Mask,
MemoryAttribute.None,
MemoryAttribute.IpcAndDeviceMapped,
- out MemoryState oldState,
- out MemoryPermission oldPermission,
+ out MemoryState OldState,
+ out MemoryPermission OldPermission,
out _))
{
- MemoryState newState = oldState;
+ MemoryState NewState = OldState;
//If writing into the code region is allowed, then we need
//to change it to mutable.
- if ((permission & MemoryPermission.Write) != 0)
+ if ((Permission & MemoryPermission.Write) != 0)
{
- if (oldState == MemoryState.CodeStatic)
+ if (OldState == MemoryState.CodeStatic)
{
- newState = MemoryState.CodeMutable;
+ NewState = MemoryState.CodeMutable;
}
- else if (oldState == MemoryState.ModCodeStatic)
+ else if (OldState == MemoryState.ModCodeStatic)
{
- newState = MemoryState.ModCodeMutable;
+ NewState = MemoryState.ModCodeMutable;
}
else
{
- throw new InvalidOperationException($"Memory state \"{oldState}\" not valid for this operation.");
+ throw new InvalidOperationException($"Memory state \"{OldState}\" not valid for this operation.");
}
}
- if (newState != oldState || permission != oldPermission)
+ if (NewState != OldState || Permission != OldPermission)
{
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- MemoryOperation operation = (permission & MemoryPermission.Execute) != 0
+ MemoryOperation Operation = (Permission & MemoryPermission.Execute) != 0
? MemoryOperation.ChangePermsAndAttributes
: MemoryOperation.ChangePermRw;
- KernelResult result = DoMmuOperation(address, pagesCount, 0, false, permission, operation);
+ KernelResult Result = DoMmuOperation(Address, PagesCount, 0, false, Permission, Operation);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- InsertBlock(address, pagesCount, newState, permission);
+ InsertBlock(Address, PagesCount, NewState, Permission);
}
return KernelResult.Success;
@@ -1315,85 +1315,85 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- public KernelResult MapPhysicalMemory(ulong address, ulong size)
+ public KernelResult MapPhysicalMemory(ulong Address, ulong Size)
{
- ulong endAddr = address + size;
+ ulong EndAddr = Address + Size;
- lock (_blocks)
+ lock (Blocks)
{
- ulong mappedSize = 0;
+ ulong MappedSize = 0;
- KMemoryInfo info;
+ KMemoryInfo Info;
- LinkedListNode<KMemoryBlock> node = FindBlockNode(address);
+ LinkedListNode<KMemoryBlock> Node = FindBlockNode(Address);
do
{
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
- if (info.State != MemoryState.Unmapped)
+ if (Info.State != MemoryState.Unmapped)
{
- mappedSize += GetSizeInRange(info, address, endAddr);
+ MappedSize += GetSizeInRange(Info, Address, EndAddr);
}
- node = node.Next;
+ Node = Node.Next;
}
- while (info.Address + info.Size < endAddr && node != null);
+ while (Info.Address + Info.Size < EndAddr && Node != null);
- if (mappedSize == size)
+ if (MappedSize == Size)
{
return KernelResult.Success;
}
- ulong remainingSize = size - mappedSize;
+ ulong RemainingSize = Size - MappedSize;
- ulong remainingPages = remainingSize / PageSize;
+ ulong RemainingPages = RemainingSize / PageSize;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.ResourceLimit != null &&
- !currentProcess.ResourceLimit.Reserve(LimitableResource.Memory, remainingSize))
+ if (CurrentProcess.ResourceLimit != null &&
+ !CurrentProcess.ResourceLimit.Reserve(LimitableResource.Memory, RemainingSize))
{
return KernelResult.ResLimitExceeded;
}
- KMemoryRegionManager region = GetMemoryRegionManager();
+ KMemoryRegionManager Region = GetMemoryRegionManager();
- KernelResult result = region.AllocatePages(remainingPages, _aslrDisabled, out KPageList pageList);
+ KernelResult Result = Region.AllocatePages(RemainingPages, AslrDisabled, out KPageList PageList);
void CleanUpForError()
{
- if (pageList != null)
+ if (PageList != null)
{
- region.FreePages(pageList);
+ Region.FreePages(PageList);
}
- currentProcess.ResourceLimit?.Release(LimitableResource.Memory, remainingSize);
+ CurrentProcess.ResourceLimit?.Release(LimitableResource.Memory, RemainingSize);
}
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
CleanUpForError();
return KernelResult.OutOfResource;
}
- MapPhysicalMemory(pageList, address, endAddr);
+ MapPhysicalMemory(PageList, Address, EndAddr);
- PhysicalMemoryUsage += remainingSize;
+ PhysicalMemoryUsage += RemainingSize;
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
InsertBlock(
- address,
- pagesCount,
+ Address,
+ PagesCount,
MemoryState.Unmapped,
MemoryPermission.None,
MemoryAttribute.None,
@@ -1405,227 +1405,227 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- public KernelResult UnmapPhysicalMemory(ulong address, ulong size)
+ public KernelResult UnmapPhysicalMemory(ulong Address, ulong Size)
{
- ulong endAddr = address + size;
+ ulong EndAddr = Address + Size;
- lock (_blocks)
+ lock (Blocks)
{
//Scan, ensure that the region can be unmapped (all blocks are heap or
//already unmapped), fill pages list for freeing memory.
- ulong heapMappedSize = 0;
+ ulong HeapMappedSize = 0;
- KPageList pageList = new KPageList();
+ KPageList PageList = new KPageList();
- KMemoryInfo info;
+ KMemoryInfo Info;
- LinkedListNode<KMemoryBlock> baseNode = FindBlockNode(address);
+ LinkedListNode<KMemoryBlock> BaseNode = FindBlockNode(Address);
- LinkedListNode<KMemoryBlock> node = baseNode;
+ LinkedListNode<KMemoryBlock> Node = BaseNode;
do
{
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
- if (info.State == MemoryState.Heap)
+ if (Info.State == MemoryState.Heap)
{
- if (info.Attribute != MemoryAttribute.None)
+ if (Info.Attribute != MemoryAttribute.None)
{
return KernelResult.InvalidMemState;
}
- ulong blockSize = GetSizeInRange(info, address, endAddr);
- ulong blockAddress = GetAddrInRange(info, address);
+ ulong BlockSize = GetSizeInRange(Info, Address, EndAddr);
+ ulong BlockAddress = GetAddrInRange(Info, Address);
- AddVaRangeToPageList(pageList, blockAddress, blockSize / PageSize);
+ AddVaRangeToPageList(PageList, BlockAddress, BlockSize / PageSize);
- heapMappedSize += blockSize;
+ HeapMappedSize += BlockSize;
}
- else if (info.State != MemoryState.Unmapped)
+ else if (Info.State != MemoryState.Unmapped)
{
return KernelResult.InvalidMemState;
}
- node = node.Next;
+ Node = Node.Next;
}
- while (info.Address + info.Size < endAddr && node != null);
+ while (Info.Address + Info.Size < EndAddr && Node != null);
- if (heapMappedSize == 0)
+ if (HeapMappedSize == 0)
{
return KernelResult.Success;
}
- if (!_blockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
+ if (!BlockAllocator.CanAllocate(MaxBlocksNeededForInsertion))
{
return KernelResult.OutOfResource;
}
//Try to unmap all the heap mapped memory inside range.
- KernelResult result = KernelResult.Success;
+ KernelResult Result = KernelResult.Success;
- node = baseNode;
+ Node = BaseNode;
do
{
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
- if (info.State == MemoryState.Heap)
+ if (Info.State == MemoryState.Heap)
{
- ulong blockSize = GetSizeInRange(info, address, endAddr);
- ulong blockAddress = GetAddrInRange(info, address);
+ ulong BlockSize = GetSizeInRange(Info, Address, EndAddr);
+ ulong BlockAddress = GetAddrInRange(Info, Address);
- ulong blockPagesCount = blockSize / PageSize;
+ ulong BlockPagesCount = BlockSize / PageSize;
- result = MmuUnmap(blockAddress, blockPagesCount);
+ Result = MmuUnmap(BlockAddress, BlockPagesCount);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
//If we failed to unmap, we need to remap everything back again.
- MapPhysicalMemory(pageList, address, blockAddress + blockSize);
+ MapPhysicalMemory(PageList, Address, BlockAddress + BlockSize);
break;
}
}
- node = node.Next;
+ Node = Node.Next;
}
- while (info.Address + info.Size < endAddr && node != null);
+ while (Info.Address + Info.Size < EndAddr && Node != null);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- GetMemoryRegionManager().FreePages(pageList);
+ GetMemoryRegionManager().FreePages(PageList);
- PhysicalMemoryUsage -= heapMappedSize;
+ PhysicalMemoryUsage -= HeapMappedSize;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- currentProcess.ResourceLimit?.Release(LimitableResource.Memory, heapMappedSize);
+ CurrentProcess.ResourceLimit?.Release(LimitableResource.Memory, HeapMappedSize);
- ulong pagesCount = size / PageSize;
+ ulong PagesCount = Size / PageSize;
- InsertBlock(address, pagesCount, MemoryState.Unmapped);
+ InsertBlock(Address, PagesCount, MemoryState.Unmapped);
}
- return result;
+ return Result;
}
}
- private void MapPhysicalMemory(KPageList pageList, ulong address, ulong endAddr)
+ private void MapPhysicalMemory(KPageList PageList, ulong Address, ulong EndAddr)
{
- KMemoryInfo info;
+ KMemoryInfo Info;
- LinkedListNode<KMemoryBlock> node = FindBlockNode(address);
+ LinkedListNode<KMemoryBlock> Node = FindBlockNode(Address);
- LinkedListNode<KPageNode> pageListNode = pageList.Nodes.First;
+ LinkedListNode<KPageNode> PageListNode = PageList.Nodes.First;
- KPageNode pageNode = pageListNode.Value;
+ KPageNode PageNode = PageListNode.Value;
- ulong srcPa = pageNode.Address;
- ulong srcPaPages = pageNode.PagesCount;
+ ulong SrcPa = PageNode.Address;
+ ulong SrcPaPages = PageNode.PagesCount;
do
{
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
- if (info.State == MemoryState.Unmapped)
+ if (Info.State == MemoryState.Unmapped)
{
- ulong blockSize = GetSizeInRange(info, address, endAddr);
+ ulong BlockSize = GetSizeInRange(Info, Address, EndAddr);
- ulong dstVaPages = blockSize / PageSize;
+ ulong DstVaPages = BlockSize / PageSize;
- ulong dstVa = GetAddrInRange(info, address);
+ ulong DstVa = GetAddrInRange(Info, Address);
- while (dstVaPages > 0)
+ while (DstVaPages > 0)
{
- if (srcPaPages == 0)
+ if (SrcPaPages == 0)
{
- pageListNode = pageListNode.Next;
+ PageListNode = PageListNode.Next;
- pageNode = pageListNode.Value;
+ PageNode = PageListNode.Value;
- srcPa = pageNode.Address;
- srcPaPages = pageNode.PagesCount;
+ SrcPa = PageNode.Address;
+ SrcPaPages = PageNode.PagesCount;
}
- ulong pagesCount = srcPaPages;
+ ulong PagesCount = SrcPaPages;
- if (pagesCount > dstVaPages)
+ if (PagesCount > DstVaPages)
{
- pagesCount = dstVaPages;
+ PagesCount = DstVaPages;
}
DoMmuOperation(
- dstVa,
- pagesCount,
- srcPa,
+ DstVa,
+ PagesCount,
+ SrcPa,
true,
MemoryPermission.ReadAndWrite,
MemoryOperation.MapPa);
- dstVa += pagesCount * PageSize;
- srcPa += pagesCount * PageSize;
- srcPaPages -= pagesCount;
- dstVaPages -= pagesCount;
+ DstVa += PagesCount * PageSize;
+ SrcPa += PagesCount * PageSize;
+ SrcPaPages -= PagesCount;
+ DstVaPages -= PagesCount;
}
}
- node = node.Next;
+ Node = Node.Next;
}
- while (info.Address + info.Size < endAddr && node != null);
+ while (Info.Address + Info.Size < EndAddr && Node != null);
}
- private static ulong GetSizeInRange(KMemoryInfo info, ulong start, ulong end)
+ private static ulong GetSizeInRange(KMemoryInfo Info, ulong Start, ulong End)
{
- ulong endAddr = info.Size + info.Address;
- ulong size = info.Size;
+ ulong EndAddr = Info.Size + Info.Address;
+ ulong Size = Info.Size;
- if (info.Address < start)
+ if (Info.Address < Start)
{
- size -= start - info.Address;
+ Size -= Start - Info.Address;
}
- if (endAddr > end)
+ if (EndAddr > End)
{
- size -= endAddr - end;
+ Size -= EndAddr - End;
}
- return size;
+ return Size;
}
- private static ulong GetAddrInRange(KMemoryInfo info, ulong start)
+ private static ulong GetAddrInRange(KMemoryInfo Info, ulong Start)
{
- if (info.Address < start)
+ if (Info.Address < Start)
{
- return start;
+ return Start;
}
- return info.Address;
+ return Info.Address;
}
- private void AddVaRangeToPageList(KPageList pageList, ulong start, ulong pagesCount)
+ private void AddVaRangeToPageList(KPageList PageList, ulong Start, ulong PagesCount)
{
- ulong address = start;
+ ulong Address = Start;
- while (address < start + pagesCount * PageSize)
+ while (Address < Start + PagesCount * PageSize)
{
- KernelResult result = ConvertVaToPa(address, out ulong pa);
+ KernelResult Result = ConvertVaToPa(Address, out ulong Pa);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
throw new InvalidOperationException("Unexpected failure translating virtual address.");
}
- pageList.AddRange(pa, 1);
+ PageList.AddRange(Pa, 1);
- address += PageSize;
+ Address += PageSize;
}
}
- private bool IsUnmapped(ulong address, ulong size)
+ private bool IsUnmapped(ulong Address, ulong Size)
{
return CheckRange(
- address,
- size,
+ Address,
+ Size,
MemoryState.Mask,
MemoryState.Unmapped,
MemoryPermission.Mask,
@@ -1639,465 +1639,465 @@ namespace Ryujinx.HLE.HOS.Kernel
}
private bool CheckRange(
- ulong address,
- ulong size,
- MemoryState stateMask,
- MemoryState stateExpected,
- MemoryPermission permissionMask,
- MemoryPermission permissionExpected,
- MemoryAttribute attributeMask,
- MemoryAttribute attributeExpected,
- MemoryAttribute attributeIgnoreMask,
- out MemoryState outState,
- out MemoryPermission outPermission,
- out MemoryAttribute outAttribute)
+ ulong Address,
+ ulong Size,
+ MemoryState StateMask,
+ MemoryState StateExpected,
+ MemoryPermission PermissionMask,
+ MemoryPermission PermissionExpected,
+ MemoryAttribute AttributeMask,
+ MemoryAttribute AttributeExpected,
+ MemoryAttribute AttributeIgnoreMask,
+ out MemoryState OutState,
+ out MemoryPermission OutPermission,
+ out MemoryAttribute OutAttribute)
{
- ulong endAddr = address + size - 1;
+ ulong EndAddr = Address + Size - 1;
- LinkedListNode<KMemoryBlock> node = FindBlockNode(address);
+ LinkedListNode<KMemoryBlock> Node = FindBlockNode(Address);
- KMemoryInfo info = node.Value.GetInfo();
+ KMemoryInfo Info = Node.Value.GetInfo();
- MemoryState firstState = info.State;
- MemoryPermission firstPermission = info.Permission;
- MemoryAttribute firstAttribute = info.Attribute;
+ MemoryState FirstState = Info.State;
+ MemoryPermission FirstPermission = Info.Permission;
+ MemoryAttribute FirstAttribute = Info.Attribute;
do
{
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
//Check if the block state matches what we expect.
- if ( firstState != info.State ||
- firstPermission != info.Permission ||
- (info.Attribute & attributeMask) != attributeExpected ||
- (firstAttribute | attributeIgnoreMask) != (info.Attribute | attributeIgnoreMask) ||
- (firstState & stateMask) != stateExpected ||
- (firstPermission & permissionMask) != permissionExpected)
+ if ( FirstState != Info.State ||
+ FirstPermission != Info.Permission ||
+ (Info.Attribute & AttributeMask) != AttributeExpected ||
+ (FirstAttribute | AttributeIgnoreMask) != (Info.Attribute | AttributeIgnoreMask) ||
+ (FirstState & StateMask) != StateExpected ||
+ (FirstPermission & PermissionMask) != PermissionExpected)
{
break;
}
//Check if this is the last block on the range, if so return success.
- if (endAddr <= info.Address + info.Size - 1)
+ if (EndAddr <= Info.Address + Info.Size - 1)
{
- outState = firstState;
- outPermission = firstPermission;
- outAttribute = firstAttribute & ~attributeIgnoreMask;
+ OutState = FirstState;
+ OutPermission = FirstPermission;
+ OutAttribute = FirstAttribute & ~AttributeIgnoreMask;
return true;
}
- node = node.Next;
+ Node = Node.Next;
}
- while (node != null);
+ while (Node != null);
- outState = MemoryState.Unmapped;
- outPermission = MemoryPermission.None;
- outAttribute = MemoryAttribute.None;
+ OutState = MemoryState.Unmapped;
+ OutPermission = MemoryPermission.None;
+ OutAttribute = MemoryAttribute.None;
return false;
}
private bool CheckRange(
- ulong address,
- ulong size,
- MemoryState stateMask,
- MemoryState stateExpected,
- MemoryPermission permissionMask,
- MemoryPermission permissionExpected,
- MemoryAttribute attributeMask,
- MemoryAttribute attributeExpected)
+ ulong Address,
+ ulong Size,
+ MemoryState StateMask,
+ MemoryState StateExpected,
+ MemoryPermission PermissionMask,
+ MemoryPermission PermissionExpected,
+ MemoryAttribute AttributeMask,
+ MemoryAttribute AttributeExpected)
{
- ulong endAddr = address + size - 1;
+ ulong EndAddr = Address + Size - 1;
- LinkedListNode<KMemoryBlock> node = FindBlockNode(address);
+ LinkedListNode<KMemoryBlock> Node = FindBlockNode(Address);
do
{
- KMemoryInfo info = node.Value.GetInfo();
+ KMemoryInfo Info = Node.Value.GetInfo();
//Check if the block state matches what we expect.
- if ((info.State & stateMask) != stateExpected ||
- (info.Permission & permissionMask) != permissionExpected ||
- (info.Attribute & attributeMask) != attributeExpected)
+ if ((Info.State & StateMask) != StateExpected ||
+ (Info.Permission & PermissionMask) != PermissionExpected ||
+ (Info.Attribute & AttributeMask) != AttributeExpected)
{
break;
}
//Check if this is the last block on the range, if so return success.
- if (endAddr <= info.Address + info.Size - 1)
+ if (EndAddr <= Info.Address + Info.Size - 1)
{
return true;
}
- node = node.Next;
+ Node = Node.Next;
}
- while (node != null);
+ while (Node != null);
return false;
}
private void InsertBlock(
- ulong baseAddress,
- ulong pagesCount,
- MemoryState oldState,
- MemoryPermission oldPermission,
- MemoryAttribute oldAttribute,
- MemoryState newState,
- MemoryPermission newPermission,
- MemoryAttribute newAttribute)
+ ulong BaseAddress,
+ ulong PagesCount,
+ MemoryState OldState,
+ MemoryPermission OldPermission,
+ MemoryAttribute OldAttribute,
+ MemoryState NewState,
+ MemoryPermission NewPermission,
+ MemoryAttribute NewAttribute)
{
//Insert new block on the list only on areas where the state
//of the block matches the state specified on the Old* state
//arguments, otherwise leave it as is.
- int oldCount = _blocks.Count;
+ int OldCount = Blocks.Count;
- oldAttribute |= MemoryAttribute.IpcAndDeviceMapped;
+ OldAttribute |= MemoryAttribute.IpcAndDeviceMapped;
- ulong endAddr = pagesCount * PageSize + baseAddress;
+ ulong EndAddr = PagesCount * PageSize + BaseAddress;
- LinkedListNode<KMemoryBlock> node = _blocks.First;
+ LinkedListNode<KMemoryBlock> Node = Blocks.First;
- while (node != null)
+ while (Node != null)
{
- LinkedListNode<KMemoryBlock> newNode = node;
- LinkedListNode<KMemoryBlock> nextNode = node.Next;
+ LinkedListNode<KMemoryBlock> NewNode = Node;
+ LinkedListNode<KMemoryBlock> NextNode = Node.Next;
- KMemoryBlock currBlock = node.Value;
+ KMemoryBlock CurrBlock = Node.Value;
- ulong currBaseAddr = currBlock.BaseAddress;
- ulong currEndAddr = currBlock.PagesCount * PageSize + currBaseAddr;
+ ulong CurrBaseAddr = CurrBlock.BaseAddress;
+ ulong CurrEndAddr = CurrBlock.PagesCount * PageSize + CurrBaseAddr;
- if (baseAddress < currEndAddr && currBaseAddr < endAddr)
+ if (BaseAddress < CurrEndAddr && CurrBaseAddr < EndAddr)
{
- MemoryAttribute currBlockAttr = currBlock.Attribute | MemoryAttribute.IpcAndDeviceMapped;
+ MemoryAttribute CurrBlockAttr = CurrBlock.Attribute | MemoryAttribute.IpcAndDeviceMapped;
- if (currBlock.State != oldState ||
- currBlock.Permission != oldPermission ||
- currBlockAttr != oldAttribute)
+ if (CurrBlock.State != OldState ||
+ CurrBlock.Permission != OldPermission ||
+ CurrBlockAttr != OldAttribute)
{
- node = nextNode;
+ Node = NextNode;
continue;
}
- if (currBaseAddr >= baseAddress && currEndAddr <= endAddr)
+ if (CurrBaseAddr >= BaseAddress && CurrEndAddr <= EndAddr)
{
- currBlock.State = newState;
- currBlock.Permission = newPermission;
- currBlock.Attribute &= ~MemoryAttribute.IpcAndDeviceMapped;
- currBlock.Attribute |= newAttribute;
+ CurrBlock.State = NewState;
+ CurrBlock.Permission = NewPermission;
+ CurrBlock.Attribute &= ~MemoryAttribute.IpcAndDeviceMapped;
+ CurrBlock.Attribute |= NewAttribute;
}
- else if (currBaseAddr >= baseAddress)
+ else if (CurrBaseAddr >= BaseAddress)
{
- currBlock.BaseAddress = endAddr;
+ CurrBlock.BaseAddress = EndAddr;
- currBlock.PagesCount = (currEndAddr - endAddr) / PageSize;
+ CurrBlock.PagesCount = (CurrEndAddr - EndAddr) / PageSize;
- ulong newPagesCount = (endAddr - currBaseAddr) / PageSize;
+ ulong NewPagesCount = (EndAddr - CurrBaseAddr) / PageSize;
- newNode = _blocks.AddBefore(node, new KMemoryBlock(
- currBaseAddr,
- newPagesCount,
- newState,
- newPermission,
- newAttribute));
+ NewNode = Blocks.AddBefore(Node, new KMemoryBlock(
+ CurrBaseAddr,
+ NewPagesCount,
+ NewState,
+ NewPermission,
+ NewAttribute));
}
- else if (currEndAddr <= endAddr)
+ else if (CurrEndAddr <= EndAddr)
{
- currBlock.PagesCount = (baseAddress - currBaseAddr) / PageSize;
+ CurrBlock.PagesCount = (BaseAddress - CurrBaseAddr) / PageSize;
- ulong newPagesCount = (currEndAddr - baseAddress) / PageSize;
+ ulong NewPagesCount = (CurrEndAddr - BaseAddress) / PageSize;
- newNode = _blocks.AddAfter(node, new KMemoryBlock(
- baseAddress,
- newPagesCount,
- newState,
- newPermission,
- newAttribute));
+ NewNode = Blocks.AddAfter(Node, new KMemoryBlock(
+ BaseAddress,
+ NewPagesCount,
+ NewState,
+ NewPermission,
+ NewAttribute));
}
else
{
- currBlock.PagesCount = (baseAddress - currBaseAddr) / PageSize;
+ CurrBlock.PagesCount = (BaseAddress - CurrBaseAddr) / PageSize;
- ulong nextPagesCount = (currEndAddr - endAddr) / PageSize;
+ ulong NextPagesCount = (CurrEndAddr - EndAddr) / PageSize;
- newNode = _blocks.AddAfter(node, new KMemoryBlock(
- baseAddress,
- pagesCount,
- newState,
- newPermission,
- newAttribute));
+ NewNode = Blocks.AddAfter(Node, new KMemoryBlock(
+ BaseAddress,
+ PagesCount,
+ NewState,
+ NewPermission,
+ NewAttribute));
- _blocks.AddAfter(newNode, new KMemoryBlock(
- endAddr,
- nextPagesCount,
- currBlock.State,
- currBlock.Permission,
- currBlock.Attribute));
+ Blocks.AddAfter(NewNode, new KMemoryBlock(
+ EndAddr,
+ NextPagesCount,
+ CurrBlock.State,
+ CurrBlock.Permission,
+ CurrBlock.Attribute));
- nextNode = null;
+ NextNode = null;
}
- MergeEqualStateNeighbours(newNode);
+ MergeEqualStateNeighbours(NewNode);
}
- node = nextNode;
+ Node = NextNode;
}
- _blockAllocator.Count += _blocks.Count - oldCount;
+ BlockAllocator.Count += Blocks.Count - OldCount;
}
private void InsertBlock(
- ulong baseAddress,
- ulong pagesCount,
- MemoryState state,
- MemoryPermission permission = MemoryPermission.None,
- MemoryAttribute attribute = MemoryAttribute.None)
+ ulong BaseAddress,
+ ulong PagesCount,
+ MemoryState State,
+ MemoryPermission Permission = MemoryPermission.None,
+ MemoryAttribute Attribute = MemoryAttribute.None)
{
//Inserts new block at the list, replacing and spliting
//existing blocks as needed.
- KMemoryBlock block = new KMemoryBlock(baseAddress, pagesCount, state, permission, attribute);
+ KMemoryBlock Block = new KMemoryBlock(BaseAddress, PagesCount, State, Permission, Attribute);
- int oldCount = _blocks.Count;
+ int OldCount = Blocks.Count;
- ulong endAddr = pagesCount * PageSize + baseAddress;
+ ulong EndAddr = PagesCount * PageSize + BaseAddress;
- LinkedListNode<KMemoryBlock> newNode = null;
+ LinkedListNode<KMemoryBlock> NewNode = null;
- LinkedListNode<KMemoryBlock> node = _blocks.First;
+ LinkedListNode<KMemoryBlock> Node = Blocks.First;
- while (node != null)
+ while (Node != null)
{
- KMemoryBlock currBlock = node.Value;
+ KMemoryBlock CurrBlock = Node.Value;
- LinkedListNode<KMemoryBlock> nextNode = node.Next;
+ LinkedListNode<KMemoryBlock> NextNode = Node.Next;
- ulong currBaseAddr = currBlock.BaseAddress;
- ulong currEndAddr = currBlock.PagesCount * PageSize + currBaseAddr;
+ ulong CurrBaseAddr = CurrBlock.BaseAddress;
+ ulong CurrEndAddr = CurrBlock.PagesCount * PageSize + CurrBaseAddr;
- if (baseAddress < currEndAddr && currBaseAddr < endAddr)
+ if (BaseAddress < CurrEndAddr && CurrBaseAddr < EndAddr)
{
- if (baseAddress >= currBaseAddr && endAddr <= currEndAddr)
+ if (BaseAddress >= CurrBaseAddr && EndAddr <= CurrEndAddr)
{
- block.Attribute |= currBlock.Attribute & MemoryAttribute.IpcAndDeviceMapped;
+ Block.Attribute |= CurrBlock.Attribute & MemoryAttribute.IpcAndDeviceMapped;
}
- if (baseAddress > currBaseAddr && endAddr < currEndAddr)
+ if (BaseAddress > CurrBaseAddr && EndAddr < CurrEndAddr)
{
- currBlock.PagesCount = (baseAddress - currBaseAddr) / PageSize;
+ CurrBlock.PagesCount = (BaseAddress - CurrBaseAddr) / PageSize;
- ulong nextPagesCount = (currEndAddr - endAddr) / PageSize;
+ ulong NextPagesCount = (CurrEndAddr - EndAddr) / PageSize;
- newNode = _blocks.AddAfter(node, block);
+ NewNode = Blocks.AddAfter(Node, Block);
- _blocks.AddAfter(newNode, new KMemoryBlock(
- endAddr,
- nextPagesCount,
- currBlock.State,
- currBlock.Permission,
- currBlock.Attribute));
+ Blocks.AddAfter(NewNode, new KMemoryBlock(
+ EndAddr,
+ NextPagesCount,
+ CurrBlock.State,
+ CurrBlock.Permission,
+ CurrBlock.Attribute));
break;
}
- else if (baseAddress <= currBaseAddr && endAddr < currEndAddr)
+ else if (BaseAddress <= CurrBaseAddr && EndAddr < CurrEndAddr)
{
- currBlock.BaseAddress = endAddr;
+ CurrBlock.BaseAddress = EndAddr;
- currBlock.PagesCount = (currEndAddr - endAddr) / PageSize;
+ CurrBlock.PagesCount = (CurrEndAddr - EndAddr) / PageSize;
- if (newNode == null)
+ if (NewNode == null)
{
- newNode = _blocks.AddBefore(node, block);
+ NewNode = Blocks.AddBefore(Node, Block);
}
}
- else if (baseAddress > currBaseAddr && endAddr >= currEndAddr)
+ else if (BaseAddress > CurrBaseAddr && EndAddr >= CurrEndAddr)
{
- currBlock.PagesCount = (baseAddress - currBaseAddr) / PageSize;
+ CurrBlock.PagesCount = (BaseAddress - CurrBaseAddr) / PageSize;
- if (newNode == null)
+ if (NewNode == null)
{
- newNode = _blocks.AddAfter(node, block);
+ NewNode = Blocks.AddAfter(Node, Block);
}
}
else
{
- if (newNode == null)
+ if (NewNode == null)
{
- newNode = _blocks.AddBefore(node, block);
+ NewNode = Blocks.AddBefore(Node, Block);
}
- _blocks.Remove(node);
+ Blocks.Remove(Node);
}
}
- node = nextNode;
+ Node = NextNode;
}
- if (newNode == null)
+ if (NewNode == null)
{
- newNode = _blocks.AddFirst(block);
+ NewNode = Blocks.AddFirst(Block);
}
- MergeEqualStateNeighbours(newNode);
+ MergeEqualStateNeighbours(NewNode);
- _blockAllocator.Count += _blocks.Count - oldCount;
+ BlockAllocator.Count += Blocks.Count - OldCount;
}
- private void MergeEqualStateNeighbours(LinkedListNode<KMemoryBlock> node)
+ private void MergeEqualStateNeighbours(LinkedListNode<KMemoryBlock> Node)
{
- KMemoryBlock block = node.Value;
+ KMemoryBlock Block = Node.Value;
- ulong endAddr = block.PagesCount * PageSize + block.BaseAddress;
+ ulong EndAddr = Block.PagesCount * PageSize + Block.BaseAddress;
- if (node.Previous != null)
+ if (Node.Previous != null)
{
- KMemoryBlock previous = node.Previous.Value;
+ KMemoryBlock Previous = Node.Previous.Value;
- if (BlockStateEquals(block, previous))
+ if (BlockStateEquals(Block, Previous))
{
- _blocks.Remove(node.Previous);
+ Blocks.Remove(Node.Previous);
- block.BaseAddress = previous.BaseAddress;
+ Block.BaseAddress = Previous.BaseAddress;
}
}
- if (node.Next != null)
+ if (Node.Next != null)
{
- KMemoryBlock next = node.Next.Value;
+ KMemoryBlock Next = Node.Next.Value;
- if (BlockStateEquals(block, next))
+ if (BlockStateEquals(Block, Next))
{
- _blocks.Remove(node.Next);
+ Blocks.Remove(Node.Next);
- endAddr = next.BaseAddress + next.PagesCount * PageSize;
+ EndAddr = Next.BaseAddress + Next.PagesCount * PageSize;
}
}
- block.PagesCount = (endAddr - block.BaseAddress) / PageSize;
+ Block.PagesCount = (EndAddr - Block.BaseAddress) / PageSize;
}
- private static bool BlockStateEquals(KMemoryBlock lhs, KMemoryBlock rhs)
+ private static bool BlockStateEquals(KMemoryBlock Lhs, KMemoryBlock Rhs)
{
- return lhs.State == rhs.State &&
- lhs.Permission == rhs.Permission &&
- lhs.Attribute == rhs.Attribute &&
- lhs.DeviceRefCount == rhs.DeviceRefCount &&
- lhs.IpcRefCount == rhs.IpcRefCount;
+ return Lhs.State == Rhs.State &&
+ Lhs.Permission == Rhs.Permission &&
+ Lhs.Attribute == Rhs.Attribute &&
+ Lhs.DeviceRefCount == Rhs.DeviceRefCount &&
+ Lhs.IpcRefCount == Rhs.IpcRefCount;
}
private ulong FindFirstFit(
- ulong regionStart,
- ulong regionPagesCount,
- ulong neededPagesCount,
- int alignment,
- ulong reservedStart,
- ulong reservedPagesCount)
+ ulong RegionStart,
+ ulong RegionPagesCount,
+ ulong NeededPagesCount,
+ int Alignment,
+ ulong ReservedStart,
+ ulong ReservedPagesCount)
{
- ulong reservedSize = reservedPagesCount * PageSize;
+ ulong ReservedSize = ReservedPagesCount * PageSize;
- ulong totalNeededSize = reservedSize + neededPagesCount * PageSize;
+ ulong TotalNeededSize = ReservedSize + NeededPagesCount * PageSize;
- ulong regionEndAddr = regionStart + regionPagesCount * PageSize;
+ ulong RegionEndAddr = RegionStart + RegionPagesCount * PageSize;
- LinkedListNode<KMemoryBlock> node = FindBlockNode(regionStart);
+ LinkedListNode<KMemoryBlock> Node = FindBlockNode(RegionStart);
- KMemoryInfo info = node.Value.GetInfo();
+ KMemoryInfo Info = Node.Value.GetInfo();
- while (regionEndAddr >= info.Address)
+ while (RegionEndAddr >= Info.Address)
{
- if (info.State == MemoryState.Unmapped)
+ if (Info.State == MemoryState.Unmapped)
{
- ulong currBaseAddr = info.Address + reservedSize;
- ulong currEndAddr = info.Address + info.Size - 1;
+ ulong CurrBaseAddr = Info.Address + ReservedSize;
+ ulong CurrEndAddr = Info.Address + Info.Size - 1;
- ulong address = BitUtils.AlignDown(currBaseAddr, alignment) + reservedStart;
+ ulong Address = BitUtils.AlignDown(CurrBaseAddr, Alignment) + ReservedStart;
- if (currBaseAddr > address)
+ if (CurrBaseAddr > Address)
{
- address += (ulong)alignment;
+ Address += (ulong)Alignment;
}
- ulong allocationEndAddr = address + totalNeededSize - 1;
+ ulong AllocationEndAddr = Address + TotalNeededSize - 1;
- if (allocationEndAddr <= regionEndAddr &&
- allocationEndAddr <= currEndAddr &&
- address < allocationEndAddr)
+ if (AllocationEndAddr <= RegionEndAddr &&
+ AllocationEndAddr <= CurrEndAddr &&
+ Address < AllocationEndAddr)
{
- return address;
+ return Address;
}
}
- node = node.Next;
+ Node = Node.Next;
- if (node == null)
+ if (Node == null)
{
break;
}
- info = node.Value.GetInfo();
+ Info = Node.Value.GetInfo();
}
return 0;
}
- private KMemoryBlock FindBlock(ulong address)
+ private KMemoryBlock FindBlock(ulong Address)
{
- return FindBlockNode(address)?.Value;
+ return FindBlockNode(Address)?.Value;
}
- private LinkedListNode<KMemoryBlock> FindBlockNode(ulong address)
+ private LinkedListNode<KMemoryBlock> FindBlockNode(ulong Address)
{
- lock (_blocks)
+ lock (Blocks)
{
- LinkedListNode<KMemoryBlock> node = _blocks.First;
+ LinkedListNode<KMemoryBlock> Node = Blocks.First;
- while (node != null)
+ while (Node != null)
{
- KMemoryBlock block = node.Value;
+ KMemoryBlock Block = Node.Value;
- ulong currEndAddr = block.PagesCount * PageSize + block.BaseAddress;
+ ulong CurrEndAddr = Block.PagesCount * PageSize + Block.BaseAddress;
- if (block.BaseAddress <= address && currEndAddr - 1 >= address)
+ if (Block.BaseAddress <= Address && CurrEndAddr - 1 >= Address)
{
- return node;
+ return Node;
}
- node = node.Next;
+ Node = Node.Next;
}
}
return null;
}
- private bool ValidateRegionForState(ulong address, ulong size, MemoryState state)
+ private bool ValidateRegionForState(ulong Address, ulong Size, MemoryState State)
{
- ulong endAddr = address + size;
+ ulong EndAddr = Address + Size;
- ulong regionBaseAddr = GetBaseAddrForState(state);
+ ulong RegionBaseAddr = GetBaseAddrForState(State);
- ulong regionEndAddr = regionBaseAddr + GetSizeForState(state);
+ ulong RegionEndAddr = RegionBaseAddr + GetSizeForState(State);
bool InsideRegion()
{
- return regionBaseAddr <= address &&
- endAddr > address &&
- endAddr - 1 <= regionEndAddr - 1;
+ return RegionBaseAddr <= Address &&
+ EndAddr > Address &&
+ EndAddr - 1 <= RegionEndAddr - 1;
}
bool OutsideHeapRegion()
{
- return endAddr <= HeapRegionStart ||
- address >= HeapRegionEnd;
+ return EndAddr <= HeapRegionStart ||
+ Address >= HeapRegionEnd;
}
bool OutsideMapRegion()
{
- return endAddr <= AliasRegionStart ||
- address >= AliasRegionEnd;
+ return EndAddr <= AliasRegionStart ||
+ Address >= AliasRegionEnd;
}
- switch (state)
+ switch (State)
{
case MemoryState.Io:
case MemoryState.Normal:
@@ -2127,12 +2127,12 @@ namespace Ryujinx.HLE.HOS.Kernel
return InsideRegion();
}
- throw new ArgumentException($"Invalid state value \"{state}\".");
+ throw new ArgumentException($"Invalid state value \"{State}\".");
}
- private ulong GetBaseAddrForState(MemoryState state)
+ private ulong GetBaseAddrForState(MemoryState State)
{
- switch (state)
+ switch (State)
{
case MemoryState.Io:
case MemoryState.Normal:
@@ -2166,12 +2166,12 @@ namespace Ryujinx.HLE.HOS.Kernel
return AddrSpaceStart;
}
- throw new ArgumentException($"Invalid state value \"{state}\".");
+ throw new ArgumentException($"Invalid state value \"{State}\".");
}
- private ulong GetSizeForState(MemoryState state)
+ private ulong GetSizeForState(MemoryState State)
{
- switch (state)
+ switch (State)
{
case MemoryState.Io:
case MemoryState.Normal:
@@ -2205,7 +2205,7 @@ namespace Ryujinx.HLE.HOS.Kernel
return AddrSpaceEnd - AddrSpaceStart;
}
- throw new ArgumentException($"Invalid state value \"{state}\".");
+ throw new ArgumentException($"Invalid state value \"{State}\".");
}
public ulong GetAddrSpaceBaseAddr()
@@ -2244,98 +2244,98 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- private KernelResult MapPages(ulong address, KPageList pageList, MemoryPermission permission)
+ private KernelResult MapPages(ulong Address, KPageList PageList, MemoryPermission Permission)
{
- ulong currAddr = address;
+ ulong CurrAddr = Address;
- KernelResult result = KernelResult.Success;
+ KernelResult Result = KernelResult.Success;
- foreach (KPageNode pageNode in pageList)
+ foreach (KPageNode PageNode in PageList)
{
- result = DoMmuOperation(
- currAddr,
- pageNode.PagesCount,
- pageNode.Address,
+ Result = DoMmuOperation(
+ CurrAddr,
+ PageNode.PagesCount,
+ PageNode.Address,
true,
- permission,
+ Permission,
MemoryOperation.MapPa);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- KMemoryInfo info = FindBlock(currAddr).GetInfo();
+ KMemoryInfo Info = FindBlock(CurrAddr).GetInfo();
- ulong pagesCount = (address - currAddr) / PageSize;
+ ulong PagesCount = (Address - CurrAddr) / PageSize;
- result = MmuUnmap(address, pagesCount);
+ Result = MmuUnmap(Address, PagesCount);
break;
}
- currAddr += pageNode.PagesCount * PageSize;
+ CurrAddr += PageNode.PagesCount * PageSize;
}
- return result;
+ return Result;
}
- private KernelResult MmuUnmap(ulong address, ulong pagesCount)
+ private KernelResult MmuUnmap(ulong Address, ulong PagesCount)
{
return DoMmuOperation(
- address,
- pagesCount,
+ Address,
+ PagesCount,
0,
false,
MemoryPermission.None,
MemoryOperation.Unmap);
}
- private KernelResult MmuChangePermission(ulong address, ulong pagesCount, MemoryPermission permission)
+ private KernelResult MmuChangePermission(ulong Address, ulong PagesCount, MemoryPermission Permission)
{
return DoMmuOperation(
- address,
- pagesCount,
+ Address,
+ PagesCount,
0,
false,
- permission,
+ Permission,
MemoryOperation.ChangePermRw);
}
private KernelResult DoMmuOperation(
- ulong dstVa,
- ulong pagesCount,
- ulong srcPa,
- bool map,
- MemoryPermission permission,
- MemoryOperation operation)
+ ulong DstVa,
+ ulong PagesCount,
+ ulong SrcPa,
+ bool Map,
+ MemoryPermission Permission,
+ MemoryOperation Operation)
{
- if (map != (operation == MemoryOperation.MapPa))
+ if (Map != (Operation == MemoryOperation.MapPa))
{
- throw new ArgumentException(nameof(map) + " value is invalid for this operation.");
+ throw new ArgumentException(nameof(Map) + " value is invalid for this operation.");
}
- KernelResult result;
+ KernelResult Result;
- switch (operation)
+ switch (Operation)
{
case MemoryOperation.MapPa:
{
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- _cpuMemory.Map((long)dstVa, (long)(srcPa - DramMemoryMap.DramBase), (long)size);
+ CpuMemory.Map((long)DstVa, (long)(SrcPa - DramMemoryMap.DramBase), (long)Size);
- result = KernelResult.Success;
+ Result = KernelResult.Success;
break;
}
case MemoryOperation.Allocate:
{
- KMemoryRegionManager region = GetMemoryRegionManager();
+ KMemoryRegionManager Region = GetMemoryRegionManager();
- result = region.AllocatePages(pagesCount, _aslrDisabled, out KPageList pageList);
+ Result = Region.AllocatePages(PagesCount, AslrDisabled, out KPageList PageList);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- result = MmuMapPages(dstVa, pageList);
+ Result = MmuMapPages(DstVa, PageList);
}
break;
@@ -2343,68 +2343,68 @@ namespace Ryujinx.HLE.HOS.Kernel
case MemoryOperation.Unmap:
{
- ulong size = pagesCount * PageSize;
+ ulong Size = PagesCount * PageSize;
- _cpuMemory.Unmap((long)dstVa, (long)size);
+ CpuMemory.Unmap((long)DstVa, (long)Size);
- result = KernelResult.Success;
+ Result = KernelResult.Success;
break;
}
- case MemoryOperation.ChangePermRw: result = KernelResult.Success; break;
- case MemoryOperation.ChangePermsAndAttributes: result = KernelResult.Success; break;
+ case MemoryOperation.ChangePermRw: Result = KernelResult.Success; break;
+ case MemoryOperation.ChangePermsAndAttributes: Result = KernelResult.Success; break;
- default: throw new ArgumentException($"Invalid operation \"{operation}\".");
+ default: throw new ArgumentException($"Invalid operation \"{Operation}\".");
}
- return result;
+ return Result;
}
private KernelResult DoMmuOperation(
- ulong address,
- ulong pagesCount,
- KPageList pageList,
- MemoryPermission permission,
- MemoryOperation operation)
+ ulong Address,
+ ulong PagesCount,
+ KPageList PageList,
+ MemoryPermission Permission,
+ MemoryOperation Operation)
{
- if (operation != MemoryOperation.MapVa)
+ if (Operation != MemoryOperation.MapVa)
{
- throw new ArgumentException($"Invalid memory operation \"{operation}\" specified.");
+ throw new ArgumentException($"Invalid memory operation \"{Operation}\" specified.");
}
- return MmuMapPages(address, pageList);
+ return MmuMapPages(Address, PageList);
}
private KMemoryRegionManager GetMemoryRegionManager()
{
- return _system.MemoryRegions[(int)_memRegion];
+ return System.MemoryRegions[(int)MemRegion];
}
- private KernelResult MmuMapPages(ulong address, KPageList pageList)
+ private KernelResult MmuMapPages(ulong Address, KPageList PageList)
{
- foreach (KPageNode pageNode in pageList)
+ foreach (KPageNode PageNode in PageList)
{
- ulong size = pageNode.PagesCount * PageSize;
+ ulong Size = PageNode.PagesCount * PageSize;
- _cpuMemory.Map((long)address, (long)(pageNode.Address - DramMemoryMap.DramBase), (long)size);
+ CpuMemory.Map((long)Address, (long)(PageNode.Address - DramMemoryMap.DramBase), (long)Size);
- address += size;
+ Address += Size;
}
return KernelResult.Success;
}
- public KernelResult ConvertVaToPa(ulong va, out ulong pa)
+ public KernelResult ConvertVaToPa(ulong Va, out ulong Pa)
{
- pa = DramMemoryMap.DramBase + (ulong)_cpuMemory.GetPhysicalAddress((long)va);
+ Pa = DramMemoryMap.DramBase + (ulong)CpuMemory.GetPhysicalAddress((long)Va);
return KernelResult.Success;
}
public long GetMmUsedPages()
{
- lock (_blocks)
+ lock (Blocks)
{
return BitUtils.DivRoundUp(GetMmUsedSize(), PageSize);
}
@@ -2412,47 +2412,47 @@ namespace Ryujinx.HLE.HOS.Kernel
private long GetMmUsedSize()
{
- return _blocks.Count * KMemoryBlockSize;
+ return Blocks.Count * KMemoryBlockSize;
}
- public bool IsInvalidRegion(ulong address, ulong size)
+ public bool IsInvalidRegion(ulong Address, ulong Size)
{
- return address + size - 1 > GetAddrSpaceBaseAddr() + GetAddrSpaceSize() - 1;
+ return Address + Size - 1 > GetAddrSpaceBaseAddr() + GetAddrSpaceSize() - 1;
}
- public bool InsideAddrSpace(ulong address, ulong size)
+ public bool InsideAddrSpace(ulong Address, ulong Size)
{
- return AddrSpaceStart <= address && address + size - 1 <= AddrSpaceEnd - 1;
+ return AddrSpaceStart <= Address && Address + Size - 1 <= AddrSpaceEnd - 1;
}
- public bool InsideAliasRegion(ulong address, ulong size)
+ public bool InsideAliasRegion(ulong Address, ulong Size)
{
- return address + size > AliasRegionStart && AliasRegionEnd > address;
+ return Address + Size > AliasRegionStart && AliasRegionEnd > Address;
}
- public bool InsideHeapRegion(ulong address, ulong size)
+ public bool InsideHeapRegion(ulong Address, ulong Size)
{
- return address + size > HeapRegionStart && HeapRegionEnd > address;
+ return Address + Size > HeapRegionStart && HeapRegionEnd > Address;
}
- public bool InsideStackRegion(ulong address, ulong size)
+ public bool InsideStackRegion(ulong Address, ulong Size)
{
- return address + size > StackRegionStart && StackRegionEnd > address;
+ return Address + Size > StackRegionStart && StackRegionEnd > Address;
}
- public bool OutsideAliasRegion(ulong address, ulong size)
+ public bool OutsideAliasRegion(ulong Address, ulong Size)
{
- return AliasRegionStart > address || address + size - 1 > AliasRegionEnd - 1;
+ return AliasRegionStart > Address || Address + Size - 1 > AliasRegionEnd - 1;
}
- public bool OutsideAddrSpace(ulong address, ulong size)
+ public bool OutsideAddrSpace(ulong Address, ulong Size)
{
- return AddrSpaceStart > address || address + size - 1 > AddrSpaceEnd - 1;
+ return AddrSpaceStart > Address || Address + Size - 1 > AddrSpaceEnd - 1;
}
- public bool OutsideStackRegion(ulong address, ulong size)
+ public bool OutsideStackRegion(ulong Address, ulong Size)
{
- return StackRegionStart > address || address + size - 1 > StackRegionEnd - 1;
+ return StackRegionStart > Address || Address + Size - 1 > StackRegionEnd - 1;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryRegionBlock.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryRegionBlock.cs
index f7e85e9a..1f334e65 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryRegionBlock.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryRegionBlock.cs
@@ -12,30 +12,30 @@ namespace Ryujinx.HLE.HOS.Kernel
public int Order;
public int NextOrder;
- public bool TryCoalesce(int index, int size)
+ public bool TryCoalesce(int Index, int Size)
{
- long mask = ((1L << size) - 1) << (index & 63);
+ long Mask = ((1L << Size) - 1) << (Index & 63);
- index /= 64;
+ Index /= 64;
- if ((mask & ~Masks[MaxLevel - 1][index]) != 0)
+ if ((Mask & ~Masks[MaxLevel - 1][Index]) != 0)
{
return false;
}
- Masks[MaxLevel - 1][index] &= ~mask;
+ Masks[MaxLevel - 1][Index] &= ~Mask;
- for (int level = MaxLevel - 2; level >= 0; level--, index /= 64)
+ for (int Level = MaxLevel - 2; Level >= 0; Level--, Index /= 64)
{
- Masks[level][index / 64] &= ~(1L << (index & 63));
+ Masks[Level][Index / 64] &= ~(1L << (Index & 63));
- if (Masks[level][index / 64] != 0)
+ if (Masks[Level][Index / 64] != 0)
{
break;
}
}
- FreeCount -= (ulong)size;
+ FreeCount -= (ulong)Size;
return true;
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KMemoryRegionManager.cs b/Ryujinx.HLE/HOS/Kernel/KMemoryRegionManager.cs
index 4c41314d..10db0753 100644
--- a/Ryujinx.HLE/HOS/Kernel/KMemoryRegionManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KMemoryRegionManager.cs
@@ -6,404 +6,404 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private static readonly int[] BlockOrders = new int[] { 12, 16, 21, 22, 25, 29, 30 };
- public ulong Address { get; }
- public ulong EndAddr { get; }
- public ulong Size { get; }
+ public ulong Address { get; private set; }
+ public ulong EndAddr { get; private set; }
+ public ulong Size { get; private set; }
- private int _blockOrdersCount;
+ private int BlockOrdersCount;
- private KMemoryRegionBlock[] _blocks;
+ private KMemoryRegionBlock[] Blocks;
- public KMemoryRegionManager(ulong address, ulong size, ulong endAddr)
+ public KMemoryRegionManager(ulong Address, ulong Size, ulong EndAddr)
{
- _blocks = new KMemoryRegionBlock[BlockOrders.Length];
+ Blocks = new KMemoryRegionBlock[BlockOrders.Length];
- Address = address;
- Size = size;
- EndAddr = endAddr;
+ this.Address = Address;
+ this.Size = Size;
+ this.EndAddr = EndAddr;
- _blockOrdersCount = BlockOrders.Length;
+ BlockOrdersCount = BlockOrders.Length;
- for (int blockIndex = 0; blockIndex < _blockOrdersCount; blockIndex++)
+ for (int BlockIndex = 0; BlockIndex < BlockOrdersCount; BlockIndex++)
{
- _blocks[blockIndex] = new KMemoryRegionBlock();
+ Blocks[BlockIndex] = new KMemoryRegionBlock();
- _blocks[blockIndex].Order = BlockOrders[blockIndex];
+ Blocks[BlockIndex].Order = BlockOrders[BlockIndex];
- int nextOrder = blockIndex == _blockOrdersCount - 1 ? 0 : BlockOrders[blockIndex + 1];
+ int NextOrder = BlockIndex == BlockOrdersCount - 1 ? 0 : BlockOrders[BlockIndex + 1];
- _blocks[blockIndex].NextOrder = nextOrder;
+ Blocks[BlockIndex].NextOrder = NextOrder;
- int currBlockSize = 1 << BlockOrders[blockIndex];
- int nextBlockSize = currBlockSize;
+ int CurrBlockSize = 1 << BlockOrders[BlockIndex];
+ int NextBlockSize = CurrBlockSize;
- if (nextOrder != 0)
+ if (NextOrder != 0)
{
- nextBlockSize = 1 << nextOrder;
+ NextBlockSize = 1 << NextOrder;
}
- ulong startAligned = BitUtils.AlignDown(address, nextBlockSize);
- ulong endAddrAligned = BitUtils.AlignDown(endAddr, currBlockSize);
+ ulong StartAligned = BitUtils.AlignDown(Address, NextBlockSize);
+ ulong EndAddrAligned = BitUtils.AlignDown(EndAddr, CurrBlockSize);
- ulong sizeInBlocksTruncated = (endAddrAligned - startAligned) >> BlockOrders[blockIndex];
+ ulong SizeInBlocksTruncated = (EndAddrAligned - StartAligned) >> BlockOrders[BlockIndex];
- ulong endAddrRounded = BitUtils.AlignUp(address + size, nextBlockSize);
+ ulong EndAddrRounded = BitUtils.AlignUp(Address + Size, NextBlockSize);
- ulong sizeInBlocksRounded = (endAddrRounded - startAligned) >> BlockOrders[blockIndex];
+ ulong SizeInBlocksRounded = (EndAddrRounded - StartAligned) >> BlockOrders[BlockIndex];
- _blocks[blockIndex].StartAligned = startAligned;
- _blocks[blockIndex].SizeInBlocksTruncated = sizeInBlocksTruncated;
- _blocks[blockIndex].SizeInBlocksRounded = sizeInBlocksRounded;
+ Blocks[BlockIndex].StartAligned = StartAligned;
+ Blocks[BlockIndex].SizeInBlocksTruncated = SizeInBlocksTruncated;
+ Blocks[BlockIndex].SizeInBlocksRounded = SizeInBlocksRounded;
- ulong currSizeInBlocks = sizeInBlocksRounded;
+ ulong CurrSizeInBlocks = SizeInBlocksRounded;
- int maxLevel = 0;
+ int MaxLevel = 0;
do
{
- maxLevel++;
+ MaxLevel++;
}
- while ((currSizeInBlocks /= 64) != 0);
+ while ((CurrSizeInBlocks /= 64) != 0);
- _blocks[blockIndex].MaxLevel = maxLevel;
+ Blocks[BlockIndex].MaxLevel = MaxLevel;
- _blocks[blockIndex].Masks = new long[maxLevel][];
+ Blocks[BlockIndex].Masks = new long[MaxLevel][];
- currSizeInBlocks = sizeInBlocksRounded;
+ CurrSizeInBlocks = SizeInBlocksRounded;
- for (int level = maxLevel - 1; level >= 0; level--)
+ for (int Level = MaxLevel - 1; Level >= 0; Level--)
{
- currSizeInBlocks = (currSizeInBlocks + 63) / 64;
+ CurrSizeInBlocks = (CurrSizeInBlocks + 63) / 64;
- _blocks[blockIndex].Masks[level] = new long[currSizeInBlocks];
+ Blocks[BlockIndex].Masks[Level] = new long[CurrSizeInBlocks];
}
}
- if (size != 0)
+ if (Size != 0)
{
- FreePages(address, size / KMemoryManager.PageSize);
+ FreePages(Address, Size / KMemoryManager.PageSize);
}
}
- public KernelResult AllocatePages(ulong pagesCount, bool backwards, out KPageList pageList)
+ public KernelResult AllocatePages(ulong PagesCount, bool Backwards, out KPageList PageList)
{
- lock (_blocks)
+ lock (Blocks)
{
- return AllocatePagesImpl(pagesCount, backwards, out pageList);
+ return AllocatePagesImpl(PagesCount, Backwards, out PageList);
}
}
- private KernelResult AllocatePagesImpl(ulong pagesCount, bool backwards, out KPageList pageList)
+ private KernelResult AllocatePagesImpl(ulong PagesCount, bool Backwards, out KPageList PageList)
{
- pageList = new KPageList();
+ PageList = new KPageList();
- if (_blockOrdersCount > 0)
+ if (BlockOrdersCount > 0)
{
- if (GetFreePagesImpl() < pagesCount)
+ if (GetFreePagesImpl() < PagesCount)
{
return KernelResult.OutOfMemory;
}
}
- else if (pagesCount != 0)
+ else if (PagesCount != 0)
{
return KernelResult.OutOfMemory;
}
- for (int blockIndex = _blockOrdersCount - 1; blockIndex >= 0; blockIndex--)
+ for (int BlockIndex = BlockOrdersCount - 1; BlockIndex >= 0; BlockIndex--)
{
- KMemoryRegionBlock block = _blocks[blockIndex];
+ KMemoryRegionBlock Block = Blocks[BlockIndex];
- ulong bestFitBlockSize = 1UL << block.Order;
+ ulong BestFitBlockSize = 1UL << Block.Order;
- ulong blockPagesCount = bestFitBlockSize / KMemoryManager.PageSize;
+ ulong BlockPagesCount = BestFitBlockSize / KMemoryManager.PageSize;
//Check if this is the best fit for this page size.
//If so, try allocating as much requested pages as possible.
- while (blockPagesCount <= pagesCount)
+ while (BlockPagesCount <= PagesCount)
{
- ulong address = 0;
+ ulong Address = 0;
- for (int currBlockIndex = blockIndex;
- currBlockIndex < _blockOrdersCount && address == 0;
- currBlockIndex++)
+ for (int CurrBlockIndex = BlockIndex;
+ CurrBlockIndex < BlockOrdersCount && Address == 0;
+ CurrBlockIndex++)
{
- block = _blocks[currBlockIndex];
+ Block = Blocks[CurrBlockIndex];
- int index = 0;
+ int Index = 0;
- bool zeroMask = false;
+ bool ZeroMask = false;
- for (int level = 0; level < block.MaxLevel; level++)
+ for (int Level = 0; Level < Block.MaxLevel; Level++)
{
- long mask = block.Masks[level][index];
+ long Mask = Block.Masks[Level][Index];
- if (mask == 0)
+ if (Mask == 0)
{
- zeroMask = true;
+ ZeroMask = true;
break;
}
- if (backwards)
+ if (Backwards)
{
- index = (index * 64 + 63) - BitUtils.CountLeadingZeros64(mask);
+ Index = (Index * 64 + 63) - BitUtils.CountLeadingZeros64(Mask);
}
else
{
- index = index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(mask));
+ Index = Index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(Mask));
}
}
- if (block.SizeInBlocksTruncated <= (ulong)index || zeroMask)
+ if (Block.SizeInBlocksTruncated <= (ulong)Index || ZeroMask)
{
continue;
}
- block.FreeCount--;
+ Block.FreeCount--;
- int tempIdx = index;
+ int TempIdx = Index;
- for (int level = block.MaxLevel - 1; level >= 0; level--, tempIdx /= 64)
+ for (int Level = Block.MaxLevel - 1; Level >= 0; Level--, TempIdx /= 64)
{
- block.Masks[level][tempIdx / 64] &= ~(1L << (tempIdx & 63));
+ Block.Masks[Level][TempIdx / 64] &= ~(1L << (TempIdx & 63));
- if (block.Masks[level][tempIdx / 64] != 0)
+ if (Block.Masks[Level][TempIdx / 64] != 0)
{
break;
}
}
- address = block.StartAligned + ((ulong)index << block.Order);
+ Address = Block.StartAligned + ((ulong)Index << Block.Order);
}
- for (int currBlockIndex = blockIndex;
- currBlockIndex < _blockOrdersCount && address == 0;
- currBlockIndex++)
+ for (int CurrBlockIndex = BlockIndex;
+ CurrBlockIndex < BlockOrdersCount && Address == 0;
+ CurrBlockIndex++)
{
- block = _blocks[currBlockIndex];
+ Block = Blocks[CurrBlockIndex];
- int index = 0;
+ int Index = 0;
- bool zeroMask = false;
+ bool ZeroMask = false;
- for (int level = 0; level < block.MaxLevel; level++)
+ for (int Level = 0; Level < Block.MaxLevel; Level++)
{
- long mask = block.Masks[level][index];
+ long Mask = Block.Masks[Level][Index];
- if (mask == 0)
+ if (Mask == 0)
{
- zeroMask = true;
+ ZeroMask = true;
break;
}
- if (backwards)
+ if (Backwards)
{
- index = index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(mask));
+ Index = Index * 64 + BitUtils.CountLeadingZeros64(BitUtils.ReverseBits64(Mask));
}
else
{
- index = (index * 64 + 63) - BitUtils.CountLeadingZeros64(mask);
+ Index = (Index * 64 + 63) - BitUtils.CountLeadingZeros64(Mask);
}
}
- if (block.SizeInBlocksTruncated <= (ulong)index || zeroMask)
+ if (Block.SizeInBlocksTruncated <= (ulong)Index || ZeroMask)
{
continue;
}
- block.FreeCount--;
+ Block.FreeCount--;
- int tempIdx = index;
+ int TempIdx = Index;
- for (int level = block.MaxLevel - 1; level >= 0; level--, tempIdx /= 64)
+ for (int Level = Block.MaxLevel - 1; Level >= 0; Level--, TempIdx /= 64)
{
- block.Masks[level][tempIdx / 64] &= ~(1L << (tempIdx & 63));
+ Block.Masks[Level][TempIdx / 64] &= ~(1L << (TempIdx & 63));
- if (block.Masks[level][tempIdx / 64] != 0)
+ if (Block.Masks[Level][TempIdx / 64] != 0)
{
break;
}
}
- address = block.StartAligned + ((ulong)index << block.Order);
+ Address = Block.StartAligned + ((ulong)Index << Block.Order);
}
//The address being zero means that no free space was found on that order,
//just give up and try with the next one.
- if (address == 0)
+ if (Address == 0)
{
break;
}
//If we are using a larger order than best fit, then we should
//split it into smaller blocks.
- ulong firstFreeBlockSize = 1UL << block.Order;
+ ulong FirstFreeBlockSize = 1UL << Block.Order;
- if (firstFreeBlockSize > bestFitBlockSize)
+ if (FirstFreeBlockSize > BestFitBlockSize)
{
- FreePages(address + bestFitBlockSize, (firstFreeBlockSize - bestFitBlockSize) / KMemoryManager.PageSize);
+ FreePages(Address + BestFitBlockSize, (FirstFreeBlockSize - BestFitBlockSize) / KMemoryManager.PageSize);
}
//Add new allocated page(s) to the pages list.
//If an error occurs, then free all allocated pages and fail.
- KernelResult result = pageList.AddRange(address, blockPagesCount);
+ KernelResult Result = PageList.AddRange(Address, BlockPagesCount);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- FreePages(address, blockPagesCount);
+ FreePages(Address, BlockPagesCount);
- foreach (KPageNode pageNode in pageList)
+ foreach (KPageNode PageNode in PageList)
{
- FreePages(pageNode.Address, pageNode.PagesCount);
+ FreePages(PageNode.Address, PageNode.PagesCount);
}
- return result;
+ return Result;
}
- pagesCount -= blockPagesCount;
+ PagesCount -= BlockPagesCount;
}
}
//Success case, all requested pages were allocated successfully.
- if (pagesCount == 0)
+ if (PagesCount == 0)
{
return KernelResult.Success;
}
//Error case, free allocated pages and return out of memory.
- foreach (KPageNode pageNode in pageList)
+ foreach (KPageNode PageNode in PageList)
{
- FreePages(pageNode.Address, pageNode.PagesCount);
+ FreePages(PageNode.Address, PageNode.PagesCount);
}
- pageList = null;
+ PageList = null;
return KernelResult.OutOfMemory;
}
- public void FreePages(KPageList pageList)
+ public void FreePages(KPageList PageList)
{
- lock (_blocks)
+ lock (Blocks)
{
- foreach (KPageNode pageNode in pageList)
+ foreach (KPageNode PageNode in PageList)
{
- FreePages(pageNode.Address, pageNode.PagesCount);
+ FreePages(PageNode.Address, PageNode.PagesCount);
}
}
}
- private void FreePages(ulong address, ulong pagesCount)
+ private void FreePages(ulong Address, ulong PagesCount)
{
- ulong endAddr = address + pagesCount * KMemoryManager.PageSize;
+ ulong EndAddr = Address + PagesCount * KMemoryManager.PageSize;
- int blockIndex = _blockOrdersCount - 1;
+ int BlockIndex = BlockOrdersCount - 1;
- ulong addressRounded = 0;
- ulong endAddrTruncated = 0;
+ ulong AddressRounded = 0;
+ ulong EndAddrTruncated = 0;
- for (; blockIndex >= 0; blockIndex--)
+ for (; BlockIndex >= 0; BlockIndex--)
{
- KMemoryRegionBlock allocInfo = _blocks[blockIndex];
+ KMemoryRegionBlock AllocInfo = Blocks[BlockIndex];
- int blockSize = 1 << allocInfo.Order;
+ int BlockSize = 1 << AllocInfo.Order;
- addressRounded = BitUtils.AlignUp (address, blockSize);
- endAddrTruncated = BitUtils.AlignDown(endAddr, blockSize);
+ AddressRounded = BitUtils.AlignUp (Address, BlockSize);
+ EndAddrTruncated = BitUtils.AlignDown(EndAddr, BlockSize);
- if (addressRounded < endAddrTruncated)
+ if (AddressRounded < EndAddrTruncated)
{
break;
}
}
- void FreeRegion(ulong currAddress)
+ void FreeRegion(ulong CurrAddress)
{
- for (int currBlockIndex = blockIndex;
- currBlockIndex < _blockOrdersCount && currAddress != 0;
- currBlockIndex++)
+ for (int CurrBlockIndex = BlockIndex;
+ CurrBlockIndex < BlockOrdersCount && CurrAddress != 0;
+ CurrBlockIndex++)
{
- KMemoryRegionBlock block = _blocks[currBlockIndex];
+ KMemoryRegionBlock Block = Blocks[CurrBlockIndex];
- block.FreeCount++;
+ Block.FreeCount++;
- ulong freedBlocks = (currAddress - block.StartAligned) >> block.Order;
+ ulong FreedBlocks = (CurrAddress - Block.StartAligned) >> Block.Order;
- int index = (int)freedBlocks;
+ int Index = (int)FreedBlocks;
- for (int level = block.MaxLevel - 1; level >= 0; level--, index /= 64)
+ for (int Level = Block.MaxLevel - 1; Level >= 0; Level--, Index /= 64)
{
- long mask = block.Masks[level][index / 64];
+ long Mask = Block.Masks[Level][Index / 64];
- block.Masks[level][index / 64] = mask | (1L << (index & 63));
+ Block.Masks[Level][Index / 64] = Mask | (1L << (Index & 63));
- if (mask != 0)
+ if (Mask != 0)
{
break;
}
}
- int blockSizeDelta = 1 << (block.NextOrder - block.Order);
+ int BlockSizeDelta = 1 << (Block.NextOrder - Block.Order);
- int freedBlocksTruncated = BitUtils.AlignDown((int)freedBlocks, blockSizeDelta);
+ int FreedBlocksTruncated = BitUtils.AlignDown((int)FreedBlocks, BlockSizeDelta);
- if (!block.TryCoalesce(freedBlocksTruncated, blockSizeDelta))
+ if (!Block.TryCoalesce(FreedBlocksTruncated, BlockSizeDelta))
{
break;
}
- currAddress = block.StartAligned + ((ulong)freedBlocksTruncated << block.Order);
+ CurrAddress = Block.StartAligned + ((ulong)FreedBlocksTruncated << Block.Order);
}
}
//Free inside aligned region.
- ulong baseAddress = addressRounded;
+ ulong BaseAddress = AddressRounded;
- while (baseAddress < endAddrTruncated)
+ while (BaseAddress < EndAddrTruncated)
{
- ulong blockSize = 1UL << _blocks[blockIndex].Order;
+ ulong BlockSize = 1UL << Blocks[BlockIndex].Order;
- FreeRegion(baseAddress);
+ FreeRegion(BaseAddress);
- baseAddress += blockSize;
+ BaseAddress += BlockSize;
}
- int nextBlockIndex = blockIndex - 1;
+ int NextBlockIndex = BlockIndex - 1;
//Free region between Address and aligned region start.
- baseAddress = addressRounded;
+ BaseAddress = AddressRounded;
- for (blockIndex = nextBlockIndex; blockIndex >= 0; blockIndex--)
+ for (BlockIndex = NextBlockIndex; BlockIndex >= 0; BlockIndex--)
{
- ulong blockSize = 1UL << _blocks[blockIndex].Order;
+ ulong BlockSize = 1UL << Blocks[BlockIndex].Order;
- while (baseAddress - blockSize >= address)
+ while (BaseAddress - BlockSize >= Address)
{
- baseAddress -= blockSize;
+ BaseAddress -= BlockSize;
- FreeRegion(baseAddress);
+ FreeRegion(BaseAddress);
}
}
//Free region between aligned region end and End Address.
- baseAddress = endAddrTruncated;
+ BaseAddress = EndAddrTruncated;
- for (blockIndex = nextBlockIndex; blockIndex >= 0; blockIndex--)
+ for (BlockIndex = NextBlockIndex; BlockIndex >= 0; BlockIndex--)
{
- ulong blockSize = 1UL << _blocks[blockIndex].Order;
+ ulong BlockSize = 1UL << Blocks[BlockIndex].Order;
- while (baseAddress + blockSize <= endAddr)
+ while (BaseAddress + BlockSize <= EndAddr)
{
- FreeRegion(baseAddress);
+ FreeRegion(BaseAddress);
- baseAddress += blockSize;
+ BaseAddress += BlockSize;
}
}
}
public ulong GetFreePages()
{
- lock (_blocks)
+ lock (Blocks)
{
return GetFreePagesImpl();
}
@@ -411,18 +411,18 @@ namespace Ryujinx.HLE.HOS.Kernel
private ulong GetFreePagesImpl()
{
- ulong availablePages = 0;
+ ulong AvailablePages = 0;
- for (int blockIndex = 0; blockIndex < _blockOrdersCount; blockIndex++)
+ for (int BlockIndex = 0; BlockIndex < BlockOrdersCount; BlockIndex++)
{
- KMemoryRegionBlock block = _blocks[blockIndex];
+ KMemoryRegionBlock Block = Blocks[BlockIndex];
- ulong blockPagesCount = (1UL << block.Order) / KMemoryManager.PageSize;
+ ulong BlockPagesCount = (1UL << Block.Order) / KMemoryManager.PageSize;
- availablePages += blockPagesCount * block.FreeCount;
+ AvailablePages += BlockPagesCount * Block.FreeCount;
}
- return availablePages;
+ return AvailablePages;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KPageList.cs b/Ryujinx.HLE/HOS/Kernel/KPageList.cs
index 65162646..05162323 100644
--- a/Ryujinx.HLE/HOS/Kernel/KPageList.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KPageList.cs
@@ -5,31 +5,31 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KPageList : IEnumerable<KPageNode>
{
- public LinkedList<KPageNode> Nodes { get; }
+ public LinkedList<KPageNode> Nodes { get; private set; }
public KPageList()
{
Nodes = new LinkedList<KPageNode>();
}
- public KernelResult AddRange(ulong address, ulong pagesCount)
+ public KernelResult AddRange(ulong Address, ulong PagesCount)
{
- if (pagesCount != 0)
+ if (PagesCount != 0)
{
if (Nodes.Last != null)
{
- KPageNode lastNode = Nodes.Last.Value;
+ KPageNode LastNode = Nodes.Last.Value;
- if (lastNode.Address + lastNode.PagesCount * KMemoryManager.PageSize == address)
+ if (LastNode.Address + LastNode.PagesCount * KMemoryManager.PageSize == Address)
{
- address = lastNode.Address;
- pagesCount += lastNode.PagesCount;
+ Address = LastNode.Address;
+ PagesCount += LastNode.PagesCount;
Nodes.RemoveLast();
}
}
- Nodes.AddLast(new KPageNode(address, pagesCount));
+ Nodes.AddLast(new KPageNode(Address, PagesCount));
}
return KernelResult.Success;
@@ -37,34 +37,34 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong GetPagesCount()
{
- ulong sum = 0;
+ ulong Sum = 0;
- foreach (KPageNode node in Nodes)
+ foreach (KPageNode Node in Nodes)
{
- sum += node.PagesCount;
+ Sum += Node.PagesCount;
}
- return sum;
+ return Sum;
}
- public bool IsEqual(KPageList other)
+ public bool IsEqual(KPageList Other)
{
- LinkedListNode<KPageNode> thisNode = Nodes.First;
- LinkedListNode<KPageNode> otherNode = other.Nodes.First;
+ LinkedListNode<KPageNode> ThisNode = Nodes.First;
+ LinkedListNode<KPageNode> OtherNode = Other.Nodes.First;
- while (thisNode != null && otherNode != null)
+ while (ThisNode != null && OtherNode != null)
{
- if (thisNode.Value.Address != otherNode.Value.Address ||
- thisNode.Value.PagesCount != otherNode.Value.PagesCount)
+ if (ThisNode.Value.Address != OtherNode.Value.Address ||
+ ThisNode.Value.PagesCount != OtherNode.Value.PagesCount)
{
return false;
}
- thisNode = thisNode.Next;
- otherNode = otherNode.Next;
+ ThisNode = ThisNode.Next;
+ OtherNode = OtherNode.Next;
}
- return thisNode == null && otherNode == null;
+ return ThisNode == null && OtherNode == null;
}
public IEnumerator<KPageNode> GetEnumerator()
diff --git a/Ryujinx.HLE/HOS/Kernel/KPageNode.cs b/Ryujinx.HLE/HOS/Kernel/KPageNode.cs
index 5cdb1c49..6cecab2e 100644
--- a/Ryujinx.HLE/HOS/Kernel/KPageNode.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KPageNode.cs
@@ -5,10 +5,10 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong Address;
public ulong PagesCount;
- public KPageNode(ulong address, ulong pagesCount)
+ public KPageNode(ulong Address, ulong PagesCount)
{
- Address = address;
- PagesCount = pagesCount;
+ this.Address = Address;
+ this.PagesCount = PagesCount;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KPort.cs b/Ryujinx.HLE/HOS/Kernel/KPort.cs
index 7e5ef394..598f3a32 100644
--- a/Ryujinx.HLE/HOS/Kernel/KPort.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KPort.cs
@@ -2,25 +2,25 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KPort : KAutoObject
{
- public KServerPort ServerPort { get; }
- public KClientPort ClientPort { get; }
+ public KServerPort ServerPort { get; private set; }
+ public KClientPort ClientPort { get; private set; }
- private long _nameAddress;
- private bool _isLight;
+ private long NameAddress;
+ private bool IsLight;
- public KPort(Horizon system) : base(system)
+ public KPort(Horizon System) : base(System)
{
- ServerPort = new KServerPort(system);
- ClientPort = new KClientPort(system);
+ ServerPort = new KServerPort(System);
+ ClientPort = new KClientPort(System);
}
- public void Initialize(int maxSessions, bool isLight, long nameAddress)
+ public void Initialize(int MaxSessions, bool IsLight, long NameAddress)
{
ServerPort.Initialize(this);
- ClientPort.Initialize(this, maxSessions);
+ ClientPort.Initialize(this, MaxSessions);
- _isLight = isLight;
- _nameAddress = nameAddress;
+ this.IsLight = IsLight;
+ this.NameAddress = NameAddress;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/KProcess.cs
index 53b55f7e..094ef222 100644
--- a/Ryujinx.HLE/HOS/Kernel/KProcess.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KProcess.cs
@@ -21,10 +21,10 @@ namespace Ryujinx.HLE.HOS.Kernel
(KernelVersionMinor << 15) |
(KernelVersionRevision << 0);
- public KMemoryManager MemoryManager { get; }
+ public KMemoryManager MemoryManager { get; private set; }
- private SortedDictionary<ulong, KTlsPageInfo> _fullTlsPages;
- private SortedDictionary<ulong, KTlsPageInfo> _freeTlsPages;
+ private SortedDictionary<ulong, KTlsPageInfo> FullTlsPages;
+ private SortedDictionary<ulong, KTlsPageInfo> FreeTlsPages;
public int DefaultCpuCore { get; private set; }
@@ -34,142 +34,142 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong PersonalMmHeapPagesCount { get; private set; }
- private ProcessState _state;
+ private ProcessState State;
- private object _processLock;
- private object _threadingLock;
+ private object ProcessLock;
+ private object ThreadingLock;
- public KAddressArbiter AddressArbiter { get; }
+ public KAddressArbiter AddressArbiter { get; private set; }
- public long[] RandomEntropy { get; }
+ public long[] RandomEntropy { get; private set; }
- private bool _signaled;
- private bool _useSystemMemBlocks;
+ private bool Signaled;
+ private bool UseSystemMemBlocks;
public string Name { get; private set; }
- private int _threadCount;
+ private int ThreadCount;
public int MmuFlags { get; private set; }
- private MemoryRegion _memRegion;
+ private MemoryRegion MemRegion;
- public KProcessCapabilities Capabilities { get; }
+ public KProcessCapabilities Capabilities { get; private set; }
public long TitleId { get; private set; }
public long Pid { get; private set; }
- private long _creationTimestamp;
- private ulong _entrypoint;
- private ulong _imageSize;
- private ulong _mainThreadStackSize;
- private ulong _memoryUsageCapacity;
- private int _category;
+ private long CreationTimestamp;
+ private ulong Entrypoint;
+ private ulong ImageSize;
+ private ulong MainThreadStackSize;
+ private ulong MemoryUsageCapacity;
+ private int Category;
public KHandleTable HandleTable { get; private set; }
public ulong UserExceptionContextAddress { get; private set; }
- private LinkedList<KThread> _threads;
+ private LinkedList<KThread> Threads;
public bool IsPaused { get; private set; }
- public Translator Translator { get; }
+ public Translator Translator { get; private set; }
- public MemoryManager CpuMemory { get; }
+ public MemoryManager CpuMemory { get; private set; }
- private SvcHandler _svcHandler;
+ private SvcHandler SvcHandler;
- public HleProcessDebugger Debugger { get; }
+ public HleProcessDebugger Debugger { get; private set; }
- public KProcess(Horizon system) : base(system)
+ public KProcess(Horizon System) : base(System)
{
- _processLock = new object();
- _threadingLock = new object();
+ ProcessLock = new object();
+ ThreadingLock = new object();
- CpuMemory = new MemoryManager(system.Device.Memory.RamPointer);
+ CpuMemory = new MemoryManager(System.Device.Memory.RamPointer);
CpuMemory.InvalidAccess += InvalidAccessHandler;
- AddressArbiter = new KAddressArbiter(system);
+ AddressArbiter = new KAddressArbiter(System);
- MemoryManager = new KMemoryManager(system, CpuMemory);
+ MemoryManager = new KMemoryManager(System, CpuMemory);
- _fullTlsPages = new SortedDictionary<ulong, KTlsPageInfo>();
- _freeTlsPages = new SortedDictionary<ulong, KTlsPageInfo>();
+ FullTlsPages = new SortedDictionary<ulong, KTlsPageInfo>();
+ FreeTlsPages = new SortedDictionary<ulong, KTlsPageInfo>();
Capabilities = new KProcessCapabilities();
RandomEntropy = new long[KScheduler.CpuCoresCount];
- _threads = new LinkedList<KThread>();
+ Threads = new LinkedList<KThread>();
Translator = new Translator();
Translator.CpuTrace += CpuTraceHandler;
- _svcHandler = new SvcHandler(system.Device, this);
+ SvcHandler = new SvcHandler(System.Device, this);
Debugger = new HleProcessDebugger(this);
}
public KernelResult InitializeKip(
- ProcessCreationInfo creationInfo,
- int[] caps,
- KPageList pageList,
- KResourceLimit resourceLimit,
- MemoryRegion memRegion)
+ ProcessCreationInfo CreationInfo,
+ int[] Caps,
+ KPageList PageList,
+ KResourceLimit ResourceLimit,
+ MemoryRegion MemRegion)
{
- ResourceLimit = resourceLimit;
- _memRegion = memRegion;
+ this.ResourceLimit = ResourceLimit;
+ this.MemRegion = MemRegion;
- AddressSpaceType addrSpaceType = (AddressSpaceType)((creationInfo.MmuFlags >> 1) & 7);
+ AddressSpaceType AddrSpaceType = (AddressSpaceType)((CreationInfo.MmuFlags >> 1) & 7);
- bool aslrEnabled = ((creationInfo.MmuFlags >> 5) & 1) != 0;
+ bool AslrEnabled = ((CreationInfo.MmuFlags >> 5) & 1) != 0;
- ulong codeAddress = creationInfo.CodeAddress;
+ ulong CodeAddress = CreationInfo.CodeAddress;
- ulong codeSize = (ulong)creationInfo.CodePagesCount * KMemoryManager.PageSize;
+ ulong CodeSize = (ulong)CreationInfo.CodePagesCount * KMemoryManager.PageSize;
- KMemoryBlockAllocator memoryBlockAllocator = (MmuFlags & 0x40) != 0
+ KMemoryBlockAllocator MemoryBlockAllocator = (MmuFlags & 0x40) != 0
? System.LargeMemoryBlockAllocator
: System.SmallMemoryBlockAllocator;
- KernelResult result = MemoryManager.InitializeForProcess(
- addrSpaceType,
- aslrEnabled,
- !aslrEnabled,
- memRegion,
- codeAddress,
- codeSize,
- memoryBlockAllocator);
+ KernelResult Result = MemoryManager.InitializeForProcess(
+ AddrSpaceType,
+ AslrEnabled,
+ !AslrEnabled,
+ MemRegion,
+ CodeAddress,
+ CodeSize,
+ MemoryBlockAllocator);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- if (!ValidateCodeAddressAndSize(codeAddress, codeSize))
+ if (!ValidateCodeAddressAndSize(CodeAddress, CodeSize))
{
return KernelResult.InvalidMemRange;
}
- result = MemoryManager.MapPages(
- codeAddress,
- pageList,
+ Result = MemoryManager.MapPages(
+ CodeAddress,
+ PageList,
MemoryState.CodeStatic,
MemoryPermission.None);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- result = Capabilities.InitializeForKernel(caps, MemoryManager);
+ Result = Capabilities.InitializeForKernel(Caps, MemoryManager);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
Pid = System.GetKipId();
@@ -179,29 +179,29 @@ namespace Ryujinx.HLE.HOS.Kernel
throw new InvalidOperationException($"Invalid KIP Id {Pid}.");
}
- result = ParseProcessInfo(creationInfo);
+ Result = ParseProcessInfo(CreationInfo);
- return result;
+ return Result;
}
public KernelResult Initialize(
- ProcessCreationInfo creationInfo,
- int[] caps,
- KResourceLimit resourceLimit,
- MemoryRegion memRegion)
+ ProcessCreationInfo CreationInfo,
+ int[] Caps,
+ KResourceLimit ResourceLimit,
+ MemoryRegion MemRegion)
{
- ResourceLimit = resourceLimit;
- _memRegion = memRegion;
+ this.ResourceLimit = ResourceLimit;
+ this.MemRegion = MemRegion;
- ulong personalMmHeapSize = GetPersonalMmHeapSize((ulong)creationInfo.PersonalMmHeapPagesCount, memRegion);
+ ulong PersonalMmHeapSize = GetPersonalMmHeapSize((ulong)CreationInfo.PersonalMmHeapPagesCount, MemRegion);
- ulong codePagesCount = (ulong)creationInfo.CodePagesCount;
+ ulong CodePagesCount = (ulong)CreationInfo.CodePagesCount;
- ulong neededSizeForProcess = personalMmHeapSize + codePagesCount * KMemoryManager.PageSize;
+ ulong NeededSizeForProcess = PersonalMmHeapSize + CodePagesCount * KMemoryManager.PageSize;
- if (neededSizeForProcess != 0 && resourceLimit != null)
+ if (NeededSizeForProcess != 0 && ResourceLimit != null)
{
- if (!resourceLimit.Reserve(LimitableResource.Memory, neededSizeForProcess))
+ if (!ResourceLimit.Reserve(LimitableResource.Memory, NeededSizeForProcess))
{
return KernelResult.ResLimitExceeded;
}
@@ -209,78 +209,78 @@ namespace Ryujinx.HLE.HOS.Kernel
void CleanUpForError()
{
- if (neededSizeForProcess != 0 && resourceLimit != null)
+ if (NeededSizeForProcess != 0 && ResourceLimit != null)
{
- resourceLimit.Release(LimitableResource.Memory, neededSizeForProcess);
+ ResourceLimit.Release(LimitableResource.Memory, NeededSizeForProcess);
}
}
- PersonalMmHeapPagesCount = (ulong)creationInfo.PersonalMmHeapPagesCount;
+ PersonalMmHeapPagesCount = (ulong)CreationInfo.PersonalMmHeapPagesCount;
- KMemoryBlockAllocator memoryBlockAllocator;
+ KMemoryBlockAllocator MemoryBlockAllocator;
if (PersonalMmHeapPagesCount != 0)
{
- memoryBlockAllocator = new KMemoryBlockAllocator(PersonalMmHeapPagesCount * KMemoryManager.PageSize);
+ MemoryBlockAllocator = new KMemoryBlockAllocator(PersonalMmHeapPagesCount * KMemoryManager.PageSize);
}
else
{
- memoryBlockAllocator = (MmuFlags & 0x40) != 0
+ MemoryBlockAllocator = (MmuFlags & 0x40) != 0
? System.LargeMemoryBlockAllocator
: System.SmallMemoryBlockAllocator;
}
- AddressSpaceType addrSpaceType = (AddressSpaceType)((creationInfo.MmuFlags >> 1) & 7);
+ AddressSpaceType AddrSpaceType = (AddressSpaceType)((CreationInfo.MmuFlags >> 1) & 7);
- bool aslrEnabled = ((creationInfo.MmuFlags >> 5) & 1) != 0;
+ bool AslrEnabled = ((CreationInfo.MmuFlags >> 5) & 1) != 0;
- ulong codeAddress = creationInfo.CodeAddress;
+ ulong CodeAddress = CreationInfo.CodeAddress;
- ulong codeSize = codePagesCount * KMemoryManager.PageSize;
+ ulong CodeSize = CodePagesCount * KMemoryManager.PageSize;
- KernelResult result = MemoryManager.InitializeForProcess(
- addrSpaceType,
- aslrEnabled,
- !aslrEnabled,
- memRegion,
- codeAddress,
- codeSize,
- memoryBlockAllocator);
+ KernelResult Result = MemoryManager.InitializeForProcess(
+ AddrSpaceType,
+ AslrEnabled,
+ !AslrEnabled,
+ MemRegion,
+ CodeAddress,
+ CodeSize,
+ MemoryBlockAllocator);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- if (!ValidateCodeAddressAndSize(codeAddress, codeSize))
+ if (!ValidateCodeAddressAndSize(CodeAddress, CodeSize))
{
CleanUpForError();
return KernelResult.InvalidMemRange;
}
- result = MemoryManager.MapNewProcessCode(
- codeAddress,
- codePagesCount,
+ Result = MemoryManager.MapNewProcessCode(
+ CodeAddress,
+ CodePagesCount,
MemoryState.CodeStatic,
MemoryPermission.None);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- result = Capabilities.InitializeForUser(caps, MemoryManager);
+ Result = Capabilities.InitializeForUser(Caps, MemoryManager);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
Pid = System.GetProcessId();
@@ -290,53 +290,53 @@ namespace Ryujinx.HLE.HOS.Kernel
throw new InvalidOperationException($"Invalid Process Id {Pid}.");
}
- result = ParseProcessInfo(creationInfo);
+ Result = ParseProcessInfo(CreationInfo);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
}
- return result;
+ return Result;
}
- private bool ValidateCodeAddressAndSize(ulong address, ulong size)
+ private bool ValidateCodeAddressAndSize(ulong Address, ulong Size)
{
- ulong codeRegionStart;
- ulong codeRegionSize;
+ ulong CodeRegionStart;
+ ulong CodeRegionSize;
switch (MemoryManager.AddrSpaceWidth)
{
case 32:
- codeRegionStart = 0x200000;
- codeRegionSize = 0x3fe00000;
+ CodeRegionStart = 0x200000;
+ CodeRegionSize = 0x3fe00000;
break;
case 36:
- codeRegionStart = 0x8000000;
- codeRegionSize = 0x78000000;
+ CodeRegionStart = 0x8000000;
+ CodeRegionSize = 0x78000000;
break;
case 39:
- codeRegionStart = 0x8000000;
- codeRegionSize = 0x7ff8000000;
+ CodeRegionStart = 0x8000000;
+ CodeRegionSize = 0x7ff8000000;
break;
default: throw new InvalidOperationException("Invalid address space width on memory manager.");
}
- ulong endAddr = address + size;
+ ulong EndAddr = Address + Size;
- ulong codeRegionEnd = codeRegionStart + codeRegionSize;
+ ulong CodeRegionEnd = CodeRegionStart + CodeRegionSize;
- if (endAddr <= address ||
- endAddr - 1 > codeRegionEnd - 1)
+ if (EndAddr <= Address ||
+ EndAddr - 1 > CodeRegionEnd - 1)
{
return false;
}
- if (MemoryManager.InsideHeapRegion (address, size) ||
- MemoryManager.InsideAliasRegion(address, size))
+ if (MemoryManager.InsideHeapRegion (Address, Size) ||
+ MemoryManager.InsideAliasRegion(Address, Size))
{
return false;
}
@@ -344,69 +344,69 @@ namespace Ryujinx.HLE.HOS.Kernel
return true;
}
- private KernelResult ParseProcessInfo(ProcessCreationInfo creationInfo)
+ private KernelResult ParseProcessInfo(ProcessCreationInfo CreationInfo)
{
//Ensure that the current kernel version is equal or above to the minimum required.
- uint requiredKernelVersionMajor = (uint)Capabilities.KernelReleaseVersion >> 19;
- uint requiredKernelVersionMinor = ((uint)Capabilities.KernelReleaseVersion >> 15) & 0xf;
+ uint RequiredKernelVersionMajor = (uint)Capabilities.KernelReleaseVersion >> 19;
+ uint RequiredKernelVersionMinor = ((uint)Capabilities.KernelReleaseVersion >> 15) & 0xf;
if (System.EnableVersionChecks)
{
- if (requiredKernelVersionMajor > KernelVersionMajor)
+ if (RequiredKernelVersionMajor > KernelVersionMajor)
{
return KernelResult.InvalidCombination;
}
- if (requiredKernelVersionMajor != KernelVersionMajor && requiredKernelVersionMajor < 3)
+ if (RequiredKernelVersionMajor != KernelVersionMajor && RequiredKernelVersionMajor < 3)
{
return KernelResult.InvalidCombination;
}
- if (requiredKernelVersionMinor > KernelVersionMinor)
+ if (RequiredKernelVersionMinor > KernelVersionMinor)
{
return KernelResult.InvalidCombination;
}
}
- KernelResult result = AllocateThreadLocalStorage(out ulong userExceptionContextAddress);
+ KernelResult Result = AllocateThreadLocalStorage(out ulong UserExceptionContextAddress);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- UserExceptionContextAddress = userExceptionContextAddress;
+ this.UserExceptionContextAddress = UserExceptionContextAddress;
- MemoryHelper.FillWithZeros(CpuMemory, (long)userExceptionContextAddress, KTlsPageInfo.TlsEntrySize);
+ MemoryHelper.FillWithZeros(CpuMemory, (long)UserExceptionContextAddress, KTlsPageInfo.TlsEntrySize);
- Name = creationInfo.Name;
+ Name = CreationInfo.Name;
- _state = ProcessState.Created;
+ State = ProcessState.Created;
- _creationTimestamp = PerformanceCounter.ElapsedMilliseconds;
+ CreationTimestamp = PerformanceCounter.ElapsedMilliseconds;
- MmuFlags = creationInfo.MmuFlags;
- _category = creationInfo.Category;
- TitleId = creationInfo.TitleId;
- _entrypoint = creationInfo.CodeAddress;
- _imageSize = (ulong)creationInfo.CodePagesCount * KMemoryManager.PageSize;
+ MmuFlags = CreationInfo.MmuFlags;
+ Category = CreationInfo.Category;
+ TitleId = CreationInfo.TitleId;
+ Entrypoint = CreationInfo.CodeAddress;
+ ImageSize = (ulong)CreationInfo.CodePagesCount * KMemoryManager.PageSize;
- _useSystemMemBlocks = ((MmuFlags >> 6) & 1) != 0;
+ UseSystemMemBlocks = ((MmuFlags >> 6) & 1) != 0;
switch ((AddressSpaceType)((MmuFlags >> 1) & 7))
{
case AddressSpaceType.Addr32Bits:
case AddressSpaceType.Addr36Bits:
case AddressSpaceType.Addr39Bits:
- _memoryUsageCapacity = MemoryManager.HeapRegionEnd -
+ MemoryUsageCapacity = MemoryManager.HeapRegionEnd -
MemoryManager.HeapRegionStart;
break;
case AddressSpaceType.Addr32BitsNoMap:
- _memoryUsageCapacity = MemoryManager.HeapRegionEnd -
- MemoryManager.HeapRegionStart +
- MemoryManager.AliasRegionEnd -
- MemoryManager.AliasRegionStart;
+ MemoryUsageCapacity = MemoryManager.HeapRegionEnd -
+ MemoryManager.HeapRegionStart +
+ MemoryManager.AliasRegionEnd -
+ MemoryManager.AliasRegionStart;
break;
default: throw new InvalidOperationException($"Invalid MMU flags value 0x{MmuFlags:x2}.");
@@ -417,130 +417,130 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- public KernelResult AllocateThreadLocalStorage(out ulong address)
+ public KernelResult AllocateThreadLocalStorage(out ulong Address)
{
System.CriticalSection.Enter();
- KernelResult result;
+ KernelResult Result;
- if (_freeTlsPages.Count > 0)
+ if (FreeTlsPages.Count > 0)
{
//If we have free TLS pages available, just use the first one.
- KTlsPageInfo pageInfo = _freeTlsPages.Values.First();
+ KTlsPageInfo PageInfo = FreeTlsPages.Values.First();
- if (!pageInfo.TryGetFreePage(out address))
+ if (!PageInfo.TryGetFreePage(out Address))
{
throw new InvalidOperationException("Unexpected failure getting free TLS page!");
}
- if (pageInfo.IsFull())
+ if (PageInfo.IsFull())
{
- _freeTlsPages.Remove(pageInfo.PageAddr);
+ FreeTlsPages.Remove(PageInfo.PageAddr);
- _fullTlsPages.Add(pageInfo.PageAddr, pageInfo);
+ FullTlsPages.Add(PageInfo.PageAddr, PageInfo);
}
- result = KernelResult.Success;
+ Result = KernelResult.Success;
}
else
{
//Otherwise, we need to create a new one.
- result = AllocateTlsPage(out KTlsPageInfo pageInfo);
+ Result = AllocateTlsPage(out KTlsPageInfo PageInfo);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- if (!pageInfo.TryGetFreePage(out address))
+ if (!PageInfo.TryGetFreePage(out Address))
{
throw new InvalidOperationException("Unexpected failure getting free TLS page!");
}
- _freeTlsPages.Add(pageInfo.PageAddr, pageInfo);
+ FreeTlsPages.Add(PageInfo.PageAddr, PageInfo);
}
else
{
- address = 0;
+ Address = 0;
}
}
System.CriticalSection.Leave();
- return result;
+ return Result;
}
- private KernelResult AllocateTlsPage(out KTlsPageInfo pageInfo)
+ private KernelResult AllocateTlsPage(out KTlsPageInfo PageInfo)
{
- pageInfo = default(KTlsPageInfo);
+ PageInfo = default(KTlsPageInfo);
- if (!System.UserSlabHeapPages.TryGetItem(out ulong tlsPagePa))
+ if (!System.UserSlabHeapPages.TryGetItem(out ulong TlsPagePa))
{
return KernelResult.OutOfMemory;
}
- ulong regionStart = MemoryManager.TlsIoRegionStart;
- ulong regionSize = MemoryManager.TlsIoRegionEnd - regionStart;
+ ulong RegionStart = MemoryManager.TlsIoRegionStart;
+ ulong RegionSize = MemoryManager.TlsIoRegionEnd - RegionStart;
- ulong regionPagesCount = regionSize / KMemoryManager.PageSize;
+ ulong RegionPagesCount = RegionSize / KMemoryManager.PageSize;
- KernelResult result = MemoryManager.AllocateOrMapPa(
+ KernelResult Result = MemoryManager.AllocateOrMapPa(
1,
KMemoryManager.PageSize,
- tlsPagePa,
+ TlsPagePa,
true,
- regionStart,
- regionPagesCount,
+ RegionStart,
+ RegionPagesCount,
MemoryState.ThreadLocal,
MemoryPermission.ReadAndWrite,
- out ulong tlsPageVa);
+ out ulong TlsPageVa);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- System.UserSlabHeapPages.Free(tlsPagePa);
+ System.UserSlabHeapPages.Free(TlsPagePa);
}
else
{
- pageInfo = new KTlsPageInfo(tlsPageVa);
+ PageInfo = new KTlsPageInfo(TlsPageVa);
- MemoryHelper.FillWithZeros(CpuMemory, (long)tlsPageVa, KMemoryManager.PageSize);
+ MemoryHelper.FillWithZeros(CpuMemory, (long)TlsPageVa, KMemoryManager.PageSize);
}
- return result;
+ return Result;
}
- public KernelResult FreeThreadLocalStorage(ulong tlsSlotAddr)
+ public KernelResult FreeThreadLocalStorage(ulong TlsSlotAddr)
{
- ulong tlsPageAddr = BitUtils.AlignDown(tlsSlotAddr, KMemoryManager.PageSize);
+ ulong TlsPageAddr = BitUtils.AlignDown(TlsSlotAddr, KMemoryManager.PageSize);
System.CriticalSection.Enter();
- KernelResult result = KernelResult.Success;
+ KernelResult Result = KernelResult.Success;
- KTlsPageInfo pageInfo = null;
+ KTlsPageInfo PageInfo = null;
- if (_fullTlsPages.TryGetValue(tlsPageAddr, out pageInfo))
+ if (FullTlsPages.TryGetValue(TlsPageAddr, out PageInfo))
{
//TLS page was full, free slot and move to free pages tree.
- _fullTlsPages.Remove(tlsPageAddr);
+ FullTlsPages.Remove(TlsPageAddr);
- _freeTlsPages.Add(tlsPageAddr, pageInfo);
+ FreeTlsPages.Add(TlsPageAddr, PageInfo);
}
- else if (!_freeTlsPages.TryGetValue(tlsPageAddr, out pageInfo))
+ else if (!FreeTlsPages.TryGetValue(TlsPageAddr, out PageInfo))
{
- result = KernelResult.InvalidAddress;
+ Result = KernelResult.InvalidAddress;
}
- if (pageInfo != null)
+ if (PageInfo != null)
{
- pageInfo.FreeTlsSlot(tlsSlotAddr);
+ PageInfo.FreeTlsSlot(TlsSlotAddr);
- if (pageInfo.IsEmpty())
+ if (PageInfo.IsEmpty())
{
//TLS page is now empty, we should ensure it is removed
//from all trees, and free the memory it was using.
- _freeTlsPages.Remove(tlsPageAddr);
+ FreeTlsPages.Remove(TlsPageAddr);
System.CriticalSection.Leave();
- FreeTlsPage(pageInfo);
+ FreeTlsPage(PageInfo);
return KernelResult.Success;
}
@@ -548,26 +548,26 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
- return result;
+ return Result;
}
- private KernelResult FreeTlsPage(KTlsPageInfo pageInfo)
+ private KernelResult FreeTlsPage(KTlsPageInfo PageInfo)
{
- KernelResult result = MemoryManager.ConvertVaToPa(pageInfo.PageAddr, out ulong tlsPagePa);
+ KernelResult Result = MemoryManager.ConvertVaToPa(PageInfo.PageAddr, out ulong TlsPagePa);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
throw new InvalidOperationException("Unexpected failure translating virtual address to physical.");
}
- result = MemoryManager.UnmapForKernel(pageInfo.PageAddr, 1, MemoryState.ThreadLocal);
+ Result = MemoryManager.UnmapForKernel(PageInfo.PageAddr, 1, MemoryState.ThreadLocal);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- System.UserSlabHeapPages.Free(tlsPagePa);
+ System.UserSlabHeapPages.Free(TlsPagePa);
}
- return result;
+ return Result;
}
private void GenerateRandomEntropy()
@@ -575,11 +575,11 @@ namespace Ryujinx.HLE.HOS.Kernel
//TODO.
}
- public KernelResult Start(int mainThreadPriority, ulong stackSize)
+ public KernelResult Start(int MainThreadPriority, ulong StackSize)
{
- lock (_processLock)
+ lock (ProcessLock)
{
- if (_state > ProcessState.CreatedAttached)
+ if (State > ProcessState.CreatedAttached)
{
return KernelResult.InvalidState;
}
@@ -589,153 +589,153 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.ResLimitExceeded;
}
- KResourceLimit threadResourceLimit = ResourceLimit;
- KResourceLimit memoryResourceLimit = null;
+ KResourceLimit ThreadResourceLimit = ResourceLimit;
+ KResourceLimit MemoryResourceLimit = null;
- if (_mainThreadStackSize != 0)
+ if (MainThreadStackSize != 0)
{
throw new InvalidOperationException("Trying to start a process with a invalid state!");
}
- ulong stackSizeRounded = BitUtils.AlignUp(stackSize, KMemoryManager.PageSize);
+ ulong StackSizeRounded = BitUtils.AlignUp(StackSize, KMemoryManager.PageSize);
- ulong neededSize = stackSizeRounded + _imageSize;
+ ulong NeededSize = StackSizeRounded + ImageSize;
//Check if the needed size for the code and the stack will fit on the
//memory usage capacity of this Process. Also check for possible overflow
//on the above addition.
- if (neededSize > _memoryUsageCapacity ||
- neededSize < stackSizeRounded)
+ if (NeededSize > MemoryUsageCapacity ||
+ NeededSize < StackSizeRounded)
{
- threadResourceLimit?.Release(LimitableResource.Thread, 1);
+ ThreadResourceLimit?.Release(LimitableResource.Thread, 1);
return KernelResult.OutOfMemory;
}
- if (stackSizeRounded != 0 && ResourceLimit != null)
+ if (StackSizeRounded != 0 && ResourceLimit != null)
{
- memoryResourceLimit = ResourceLimit;
+ MemoryResourceLimit = ResourceLimit;
- if (!memoryResourceLimit.Reserve(LimitableResource.Memory, stackSizeRounded))
+ if (!MemoryResourceLimit.Reserve(LimitableResource.Memory, StackSizeRounded))
{
- threadResourceLimit?.Release(LimitableResource.Thread, 1);
+ ThreadResourceLimit?.Release(LimitableResource.Thread, 1);
return KernelResult.ResLimitExceeded;
}
}
- KernelResult result;
+ KernelResult Result;
- KThread mainThread = null;
+ KThread MainThread = null;
- ulong stackTop = 0;
+ ulong StackTop = 0;
void CleanUpForError()
{
- mainThread?.Terminate();
+ MainThread?.Terminate();
HandleTable.Destroy();
- if (_mainThreadStackSize != 0)
+ if (MainThreadStackSize != 0)
{
- ulong stackBottom = stackTop - _mainThreadStackSize;
+ ulong StackBottom = StackTop - MainThreadStackSize;
- ulong stackPagesCount = _mainThreadStackSize / KMemoryManager.PageSize;
+ ulong StackPagesCount = MainThreadStackSize / KMemoryManager.PageSize;
- MemoryManager.UnmapForKernel(stackBottom, stackPagesCount, MemoryState.Stack);
+ MemoryManager.UnmapForKernel(StackBottom, StackPagesCount, MemoryState.Stack);
}
- memoryResourceLimit?.Release(LimitableResource.Memory, stackSizeRounded);
- threadResourceLimit?.Release(LimitableResource.Thread, 1);
+ MemoryResourceLimit?.Release(LimitableResource.Memory, StackSizeRounded);
+ ThreadResourceLimit?.Release(LimitableResource.Thread, 1);
}
- if (stackSizeRounded != 0)
+ if (StackSizeRounded != 0)
{
- ulong stackPagesCount = stackSizeRounded / KMemoryManager.PageSize;
+ ulong StackPagesCount = StackSizeRounded / KMemoryManager.PageSize;
- ulong regionStart = MemoryManager.StackRegionStart;
- ulong regionSize = MemoryManager.StackRegionEnd - regionStart;
+ ulong RegionStart = MemoryManager.StackRegionStart;
+ ulong RegionSize = MemoryManager.StackRegionEnd - RegionStart;
- ulong regionPagesCount = regionSize / KMemoryManager.PageSize;
+ ulong RegionPagesCount = RegionSize / KMemoryManager.PageSize;
- result = MemoryManager.AllocateOrMapPa(
- stackPagesCount,
+ Result = MemoryManager.AllocateOrMapPa(
+ StackPagesCount,
KMemoryManager.PageSize,
0,
false,
- regionStart,
- regionPagesCount,
+ RegionStart,
+ RegionPagesCount,
MemoryState.Stack,
MemoryPermission.ReadAndWrite,
- out ulong stackBottom);
+ out ulong StackBottom);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- _mainThreadStackSize += stackSizeRounded;
+ MainThreadStackSize += StackSizeRounded;
- stackTop = stackBottom + stackSizeRounded;
+ StackTop = StackBottom + StackSizeRounded;
}
- ulong heapCapacity = _memoryUsageCapacity - _mainThreadStackSize - _imageSize;
+ ulong HeapCapacity = MemoryUsageCapacity - MainThreadStackSize - ImageSize;
- result = MemoryManager.SetHeapCapacity(heapCapacity);
+ Result = MemoryManager.SetHeapCapacity(HeapCapacity);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
HandleTable = new KHandleTable(System);
- result = HandleTable.Initialize(Capabilities.HandleTableSize);
+ Result = HandleTable.Initialize(Capabilities.HandleTableSize);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- mainThread = new KThread(System);
+ MainThread = new KThread(System);
- result = mainThread.Initialize(
- _entrypoint,
+ Result = MainThread.Initialize(
+ Entrypoint,
0,
- stackTop,
- mainThreadPriority,
+ StackTop,
+ MainThreadPriority,
DefaultCpuCore,
this);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- result = HandleTable.GenerateHandle(mainThread, out int mainThreadHandle);
+ Result = HandleTable.GenerateHandle(MainThread, out int MainThreadHandle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
CleanUpForError();
- return result;
+ return Result;
}
- mainThread.SetEntryArguments(0, mainThreadHandle);
+ MainThread.SetEntryArguments(0, MainThreadHandle);
- ProcessState oldState = _state;
- ProcessState newState = _state != ProcessState.Created
+ ProcessState OldState = State;
+ ProcessState NewState = State != ProcessState.Created
? ProcessState.Attached
: ProcessState.Started;
- SetState(newState);
+ SetState(NewState);
//TODO: We can't call KThread.Start from a non-guest thread.
//We will need to make some changes to allow the creation of
@@ -750,41 +750,41 @@ namespace Ryujinx.HLE.HOS.Kernel
CleanUpForError();
} */
- mainThread.Reschedule(ThreadSchedState.Running);
+ MainThread.Reschedule(ThreadSchedState.Running);
- return result;
+ return Result;
}
}
- private void SetState(ProcessState newState)
+ private void SetState(ProcessState NewState)
{
- if (_state != newState)
+ if (State != NewState)
{
- _state = newState;
- _signaled = true;
+ State = NewState;
+ Signaled = true;
Signal();
}
}
public KernelResult InitializeThread(
- KThread thread,
- ulong entrypoint,
- ulong argsPtr,
- ulong stackTop,
- int priority,
- int cpuCore)
+ KThread Thread,
+ ulong Entrypoint,
+ ulong ArgsPtr,
+ ulong StackTop,
+ int Priority,
+ int CpuCore)
{
- lock (_processLock)
+ lock (ProcessLock)
{
- return thread.Initialize(entrypoint, argsPtr, stackTop, priority, cpuCore, this);
+ return Thread.Initialize(Entrypoint, ArgsPtr, StackTop, Priority, CpuCore, this);
}
}
- public void SubscribeThreadEventHandlers(CpuThread context)
+ public void SubscribeThreadEventHandlers(CpuThread Context)
{
- context.ThreadState.Interrupt += InterruptHandler;
- context.ThreadState.SvcCall += _svcHandler.SvcCall;
+ Context.ThreadState.Interrupt += InterruptHandler;
+ Context.ThreadState.SvcCall += SvcHandler.SvcCall;
}
private void InterruptHandler(object sender, EventArgs e)
@@ -794,7 +794,7 @@ namespace Ryujinx.HLE.HOS.Kernel
public void IncrementThreadCount()
{
- Interlocked.Increment(ref _threadCount);
+ Interlocked.Increment(ref ThreadCount);
System.ThreadCounter.AddCount();
}
@@ -803,7 +803,7 @@ namespace Ryujinx.HLE.HOS.Kernel
{
System.ThreadCounter.Signal();
- if (Interlocked.Decrement(ref _threadCount) == 0)
+ if (Interlocked.Decrement(ref ThreadCount) == 0)
{
Terminate();
}
@@ -811,25 +811,25 @@ namespace Ryujinx.HLE.HOS.Kernel
public ulong GetMemoryCapacity()
{
- ulong totalCapacity = (ulong)ResourceLimit.GetRemainingValue(LimitableResource.Memory);
+ ulong TotalCapacity = (ulong)ResourceLimit.GetRemainingValue(LimitableResource.Memory);
- totalCapacity += MemoryManager.GetTotalHeapSize();
+ TotalCapacity += MemoryManager.GetTotalHeapSize();
- totalCapacity += GetPersonalMmHeapSize();
+ TotalCapacity += GetPersonalMmHeapSize();
- totalCapacity += _imageSize + _mainThreadStackSize;
+ TotalCapacity += ImageSize + MainThreadStackSize;
- if (totalCapacity <= _memoryUsageCapacity)
+ if (TotalCapacity <= MemoryUsageCapacity)
{
- return totalCapacity;
+ return TotalCapacity;
}
- return _memoryUsageCapacity;
+ return MemoryUsageCapacity;
}
public ulong GetMemoryUsage()
{
- return _imageSize + _mainThreadStackSize + MemoryManager.GetTotalHeapSize() + GetPersonalMmHeapSize();
+ return ImageSize + MainThreadStackSize + MemoryManager.GetTotalHeapSize() + GetPersonalMmHeapSize();
}
public ulong GetMemoryCapacityWithoutPersonalMmHeap()
@@ -844,83 +844,83 @@ namespace Ryujinx.HLE.HOS.Kernel
private ulong GetPersonalMmHeapSize()
{
- return GetPersonalMmHeapSize(PersonalMmHeapPagesCount, _memRegion);
+ return GetPersonalMmHeapSize(PersonalMmHeapPagesCount, MemRegion);
}
- private static ulong GetPersonalMmHeapSize(ulong personalMmHeapPagesCount, MemoryRegion memRegion)
+ private static ulong GetPersonalMmHeapSize(ulong PersonalMmHeapPagesCount, MemoryRegion MemRegion)
{
- if (memRegion == MemoryRegion.Applet)
+ if (MemRegion == MemoryRegion.Applet)
{
return 0;
}
- return personalMmHeapPagesCount * KMemoryManager.PageSize;
+ return PersonalMmHeapPagesCount * KMemoryManager.PageSize;
}
- public void AddThread(KThread thread)
+ public void AddThread(KThread Thread)
{
- lock (_threadingLock)
+ lock (ThreadingLock)
{
- thread.ProcessListNode = _threads.AddLast(thread);
+ Thread.ProcessListNode = Threads.AddLast(Thread);
}
}
- public void RemoveThread(KThread thread)
+ public void RemoveThread(KThread Thread)
{
- lock (_threadingLock)
+ lock (ThreadingLock)
{
- _threads.Remove(thread.ProcessListNode);
+ Threads.Remove(Thread.ProcessListNode);
}
}
- public bool IsCpuCoreAllowed(int core)
+ public bool IsCpuCoreAllowed(int Core)
{
- return (Capabilities.AllowedCpuCoresMask & (1L << core)) != 0;
+ return (Capabilities.AllowedCpuCoresMask & (1L << Core)) != 0;
}
- public bool IsPriorityAllowed(int priority)
+ public bool IsPriorityAllowed(int Priority)
{
- return (Capabilities.AllowedThreadPriosMask & (1L << priority)) != 0;
+ return (Capabilities.AllowedThreadPriosMask & (1L << Priority)) != 0;
}
public override bool IsSignaled()
{
- return _signaled;
+ return Signaled;
}
public KernelResult Terminate()
{
- KernelResult result;
+ KernelResult Result;
- bool shallTerminate = false;
+ bool ShallTerminate = false;
System.CriticalSection.Enter();
- lock (_processLock)
+ lock (ProcessLock)
{
- if (_state >= ProcessState.Started)
+ if (State >= ProcessState.Started)
{
- if (_state == ProcessState.Started ||
- _state == ProcessState.Crashed ||
- _state == ProcessState.Attached ||
- _state == ProcessState.DebugSuspended)
+ if (State == ProcessState.Started ||
+ State == ProcessState.Crashed ||
+ State == ProcessState.Attached ||
+ State == ProcessState.DebugSuspended)
{
SetState(ProcessState.Exiting);
- shallTerminate = true;
+ ShallTerminate = true;
}
- result = KernelResult.Success;
+ Result = KernelResult.Success;
}
else
{
- result = KernelResult.InvalidState;
+ Result = KernelResult.InvalidState;
}
}
System.CriticalSection.Leave();
- if (shallTerminate)
+ if (ShallTerminate)
{
//UnpauseAndTerminateAllThreadsExcept(System.Scheduler.GetCurrentThread());
@@ -930,10 +930,10 @@ namespace Ryujinx.HLE.HOS.Kernel
SignalExit();
}
- return result;
+ return Result;
}
- private void UnpauseAndTerminateAllThreadsExcept(KThread thread)
+ private void UnpauseAndTerminateAllThreadsExcept(KThread Thread)
{
//TODO.
}
@@ -959,38 +959,38 @@ namespace Ryujinx.HLE.HOS.Kernel
public KernelResult ClearIfNotExited()
{
- KernelResult result;
+ KernelResult Result;
System.CriticalSection.Enter();
- lock (_processLock)
+ lock (ProcessLock)
{
- if (_state != ProcessState.Exited && _signaled)
+ if (State != ProcessState.Exited && Signaled)
{
- _signaled = false;
+ Signaled = false;
- result = KernelResult.Success;
+ Result = KernelResult.Success;
}
else
{
- result = KernelResult.InvalidState;
+ Result = KernelResult.InvalidState;
}
}
System.CriticalSection.Leave();
- return result;
+ return Result;
}
public void StopAllThreads()
{
- lock (_threadingLock)
+ lock (ThreadingLock)
{
- foreach (KThread thread in _threads)
+ foreach (KThread Thread in Threads)
{
- thread.Context.StopExecution();
+ Thread.Context.StopExecution();
- System.Scheduler.CoreManager.Set(thread.Context.Work);
+ System.Scheduler.CoreManager.Set(Thread.Context.Work);
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KProcessCapabilities.cs b/Ryujinx.HLE/HOS/Kernel/KProcessCapabilities.cs
index c715a41e..dfbe1f36 100644
--- a/Ryujinx.HLE/HOS/Kernel/KProcessCapabilities.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KProcessCapabilities.cs
@@ -4,8 +4,8 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KProcessCapabilities
{
- public byte[] SvcAccessMask { get; }
- public byte[] IrqAccessMask { get; }
+ public byte[] SvcAccessMask { get; private set; }
+ public byte[] IrqAccessMask { get; private set; }
public long AllowedCpuCoresMask { get; private set; }
public long AllowedThreadPriosMask { get; private set; }
@@ -21,91 +21,91 @@ namespace Ryujinx.HLE.HOS.Kernel
IrqAccessMask = new byte[0x80];
}
- public KernelResult InitializeForKernel(int[] caps, KMemoryManager memoryManager)
+ public KernelResult InitializeForKernel(int[] Caps, KMemoryManager MemoryManager)
{
AllowedCpuCoresMask = 0xf;
AllowedThreadPriosMask = -1;
DebuggingFlags &= ~3;
KernelReleaseVersion = KProcess.KernelVersionPacked;
- return Parse(caps, memoryManager);
+ return Parse(Caps, MemoryManager);
}
- public KernelResult InitializeForUser(int[] caps, KMemoryManager memoryManager)
+ public KernelResult InitializeForUser(int[] Caps, KMemoryManager MemoryManager)
{
- return Parse(caps, memoryManager);
+ return Parse(Caps, MemoryManager);
}
- private KernelResult Parse(int[] caps, KMemoryManager memoryManager)
+ private KernelResult Parse(int[] Caps, KMemoryManager MemoryManager)
{
- int mask0 = 0;
- int mask1 = 0;
+ int Mask0 = 0;
+ int Mask1 = 0;
- for (int index = 0; index < caps.Length; index++)
+ for (int Index = 0; Index < Caps.Length; Index++)
{
- int cap = caps[index];
+ int Cap = Caps[Index];
- if (((cap + 1) & ~cap) != 0x40)
+ if (((Cap + 1) & ~Cap) != 0x40)
{
- KernelResult result = ParseCapability(cap, ref mask0, ref mask1, memoryManager);
+ KernelResult Result = ParseCapability(Cap, ref Mask0, ref Mask1, MemoryManager);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
}
else
{
- if ((uint)index + 1 >= caps.Length)
+ if ((uint)Index + 1 >= Caps.Length)
{
return KernelResult.InvalidCombination;
}
- int prevCap = cap;
+ int PrevCap = Cap;
- cap = caps[++index];
+ Cap = Caps[++Index];
- if (((cap + 1) & ~cap) != 0x40)
+ if (((Cap + 1) & ~Cap) != 0x40)
{
return KernelResult.InvalidCombination;
}
- if ((cap & 0x78000000) != 0)
+ if ((Cap & 0x78000000) != 0)
{
return KernelResult.MaximumExceeded;
}
- if ((cap & 0x7ffff80) == 0)
+ if ((Cap & 0x7ffff80) == 0)
{
return KernelResult.InvalidSize;
}
- long address = ((long)(uint)prevCap << 5) & 0xffffff000;
- long size = ((long)(uint)cap << 5) & 0xfffff000;
+ long Address = ((long)(uint)PrevCap << 5) & 0xffffff000;
+ long Size = ((long)(uint)Cap << 5) & 0xfffff000;
- if (((ulong)(address + size - 1) >> 36) != 0)
+ if (((ulong)(Address + Size - 1) >> 36) != 0)
{
return KernelResult.InvalidAddress;
}
- MemoryPermission perm = (prevCap >> 31) != 0
+ MemoryPermission Perm = (PrevCap >> 31) != 0
? MemoryPermission.Read
: MemoryPermission.ReadAndWrite;
- KernelResult result;
+ KernelResult Result;
- if ((cap >> 31) != 0)
+ if ((Cap >> 31) != 0)
{
- result = memoryManager.MapNormalMemory(address, size, perm);
+ Result = MemoryManager.MapNormalMemory(Address, Size, Perm);
}
else
{
- result = memoryManager.MapIoMemory(address, size, perm);
+ Result = MemoryManager.MapIoMemory(Address, Size, Perm);
}
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
}
}
@@ -113,30 +113,30 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- private KernelResult ParseCapability(int cap, ref int mask0, ref int mask1, KMemoryManager memoryManager)
+ private KernelResult ParseCapability(int Cap, ref int Mask0, ref int Mask1, KMemoryManager MemoryManager)
{
- int code = (cap + 1) & ~cap;
+ int Code = (Cap + 1) & ~Cap;
- if (code == 1)
+ if (Code == 1)
{
return KernelResult.InvalidCapability;
}
- else if (code == 0)
+ else if (Code == 0)
{
return KernelResult.Success;
}
- int codeMask = 1 << (32 - BitUtils.CountLeadingZeros32(code + 1));
+ int CodeMask = 1 << (32 - BitUtils.CountLeadingZeros32(Code + 1));
//Check if the property was already set.
- if (((mask0 & codeMask) & 0x1e008) != 0)
+ if (((Mask0 & CodeMask) & 0x1e008) != 0)
{
return KernelResult.InvalidCombination;
}
- mask0 |= codeMask;
+ Mask0 |= CodeMask;
- switch (code)
+ switch (Code)
{
case 8:
{
@@ -145,65 +145,65 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.InvalidCapability;
}
- int lowestCpuCore = (cap >> 16) & 0xff;
- int highestCpuCore = (cap >> 24) & 0xff;
+ int LowestCpuCore = (Cap >> 16) & 0xff;
+ int HighestCpuCore = (Cap >> 24) & 0xff;
- if (lowestCpuCore > highestCpuCore)
+ if (LowestCpuCore > HighestCpuCore)
{
return KernelResult.InvalidCombination;
}
- int highestThreadPrio = (cap >> 4) & 0x3f;
- int lowestThreadPrio = (cap >> 10) & 0x3f;
+ int HighestThreadPrio = (Cap >> 4) & 0x3f;
+ int LowestThreadPrio = (Cap >> 10) & 0x3f;
- if (lowestThreadPrio > highestThreadPrio)
+ if (LowestThreadPrio > HighestThreadPrio)
{
return KernelResult.InvalidCombination;
}
- if (highestCpuCore >= KScheduler.CpuCoresCount)
+ if (HighestCpuCore >= KScheduler.CpuCoresCount)
{
return KernelResult.InvalidCpuCore;
}
- AllowedCpuCoresMask = GetMaskFromMinMax(lowestCpuCore, highestCpuCore);
- AllowedThreadPriosMask = GetMaskFromMinMax(lowestThreadPrio, highestThreadPrio);
+ AllowedCpuCoresMask = GetMaskFromMinMax(LowestCpuCore, HighestCpuCore);
+ AllowedThreadPriosMask = GetMaskFromMinMax(LowestThreadPrio, HighestThreadPrio);
break;
}
case 0x10:
{
- int slot = (cap >> 29) & 7;
+ int Slot = (Cap >> 29) & 7;
- int svcSlotMask = 1 << slot;
+ int SvcSlotMask = 1 << Slot;
- if ((mask1 & svcSlotMask) != 0)
+ if ((Mask1 & SvcSlotMask) != 0)
{
return KernelResult.InvalidCombination;
}
- mask1 |= svcSlotMask;
+ Mask1 |= SvcSlotMask;
- int svcMask = (cap >> 5) & 0xffffff;
+ int SvcMask = (Cap >> 5) & 0xffffff;
- int baseSvc = slot * 24;
+ int BaseSvc = Slot * 24;
- for (int index = 0; index < 24; index++)
+ for (int Index = 0; Index < 24; Index++)
{
- if (((svcMask >> index) & 1) == 0)
+ if (((SvcMask >> Index) & 1) == 0)
{
continue;
}
- int svcId = baseSvc + index;
+ int SvcId = BaseSvc + Index;
- if (svcId > 0x7f)
+ if (SvcId > 0x7f)
{
return KernelResult.MaximumExceeded;
}
- SvcAccessMask[svcId / 8] |= (byte)(1 << (svcId & 7));
+ SvcAccessMask[SvcId / 8] |= (byte)(1 << (SvcId & 7));
}
break;
@@ -211,9 +211,9 @@ namespace Ryujinx.HLE.HOS.Kernel
case 0x80:
{
- long address = ((long)(uint)cap << 4) & 0xffffff000;
+ long Address = ((long)(uint)Cap << 4) & 0xffffff000;
- memoryManager.MapIoMemory(address, KMemoryManager.PageSize, MemoryPermission.ReadAndWrite);
+ MemoryManager.MapIoMemory(Address, KMemoryManager.PageSize, MemoryPermission.ReadAndWrite);
break;
}
@@ -221,17 +221,17 @@ namespace Ryujinx.HLE.HOS.Kernel
case 0x800:
{
//TODO: GIC distributor check.
- int irq0 = (cap >> 12) & 0x3ff;
- int irq1 = (cap >> 22) & 0x3ff;
+ int Irq0 = (Cap >> 12) & 0x3ff;
+ int Irq1 = (Cap >> 22) & 0x3ff;
- if (irq0 != 0x3ff)
+ if (Irq0 != 0x3ff)
{
- IrqAccessMask[irq0 / 8] |= (byte)(1 << (irq0 & 7));
+ IrqAccessMask[Irq0 / 8] |= (byte)(1 << (Irq0 & 7));
}
- if (irq1 != 0x3ff)
+ if (Irq1 != 0x3ff)
{
- IrqAccessMask[irq1 / 8] |= (byte)(1 << (irq1 & 7));
+ IrqAccessMask[Irq1 / 8] |= (byte)(1 << (Irq1 & 7));
}
break;
@@ -239,14 +239,14 @@ namespace Ryujinx.HLE.HOS.Kernel
case 0x2000:
{
- int applicationType = cap >> 14;
+ int ApplicationType = Cap >> 14;
- if ((uint)applicationType > 7)
+ if ((uint)ApplicationType > 7)
{
return KernelResult.ReservedValue;
}
- ApplicationType = applicationType;
+ this.ApplicationType = ApplicationType;
break;
}
@@ -254,41 +254,41 @@ namespace Ryujinx.HLE.HOS.Kernel
case 0x4000:
{
//Note: This check is bugged on kernel too, we are just replicating the bug here.
- if ((KernelReleaseVersion >> 17) != 0 || cap < 0x80000)
+ if ((KernelReleaseVersion >> 17) != 0 || Cap < 0x80000)
{
return KernelResult.ReservedValue;
}
- KernelReleaseVersion = cap;
+ KernelReleaseVersion = Cap;
break;
}
case 0x8000:
{
- int handleTableSize = cap >> 26;
+ int HandleTableSize = Cap >> 26;
- if ((uint)handleTableSize > 0x3ff)
+ if ((uint)HandleTableSize > 0x3ff)
{
return KernelResult.ReservedValue;
}
- HandleTableSize = handleTableSize;
+ this.HandleTableSize = HandleTableSize;
break;
}
case 0x10000:
{
- int debuggingFlags = cap >> 19;
+ int DebuggingFlags = Cap >> 19;
- if ((uint)debuggingFlags > 3)
+ if ((uint)DebuggingFlags > 3)
{
return KernelResult.ReservedValue;
}
- DebuggingFlags &= ~3;
- DebuggingFlags |= debuggingFlags;
+ this.DebuggingFlags &= ~3;
+ this.DebuggingFlags |= DebuggingFlags;
break;
}
@@ -299,13 +299,13 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- private static long GetMaskFromMinMax(int min, int max)
+ private static long GetMaskFromMinMax(int Min, int Max)
{
- int range = max - min + 1;
+ int Range = Max - Min + 1;
- long mask = (1L << range) - 1;
+ long Mask = (1L << Range) - 1;
- return mask << min;
+ return Mask << Min;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KReadableEvent.cs b/Ryujinx.HLE/HOS/Kernel/KReadableEvent.cs
index e1a3e63f..bfb8e7e2 100644
--- a/Ryujinx.HLE/HOS/Kernel/KReadableEvent.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KReadableEvent.cs
@@ -2,22 +2,22 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KReadableEvent : KSynchronizationObject
{
- private KEvent _parent;
+ private KEvent Parent;
- private bool _signaled;
+ private bool Signaled;
- public KReadableEvent(Horizon system, KEvent parent) : base(system)
+ public KReadableEvent(Horizon System, KEvent Parent) : base(System)
{
- _parent = parent;
+ this.Parent = Parent;
}
public override void Signal()
{
System.CriticalSection.Enter();
- if (!_signaled)
+ if (!Signaled)
{
- _signaled = true;
+ Signaled = true;
base.Signal();
}
@@ -27,36 +27,36 @@ namespace Ryujinx.HLE.HOS.Kernel
public KernelResult Clear()
{
- _signaled = false;
+ Signaled = false;
return KernelResult.Success;
}
public KernelResult ClearIfSignaled()
{
- KernelResult result;
+ KernelResult Result;
System.CriticalSection.Enter();
- if (_signaled)
+ if (Signaled)
{
- _signaled = false;
+ Signaled = false;
- result = KernelResult.Success;
+ Result = KernelResult.Success;
}
else
{
- result = KernelResult.InvalidState;
+ Result = KernelResult.InvalidState;
}
System.CriticalSection.Leave();
- return result;
+ return Result;
}
public override bool IsSignaled()
{
- return _signaled;
+ return Signaled;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KResourceLimit.cs b/Ryujinx.HLE/HOS/Kernel/KResourceLimit.cs
index 09c53e5b..6fd70d0c 100644
--- a/Ryujinx.HLE/HOS/Kernel/KResourceLimit.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KResourceLimit.cs
@@ -7,127 +7,127 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int Time10SecondsMs = 10000;
- private long[] _current;
- private long[] _limit;
- private long[] _available;
+ private long[] Current;
+ private long[] Limit;
+ private long[] Available;
- private object _lockObj;
+ private object LockObj;
- private LinkedList<KThread> _waitingThreads;
+ private LinkedList<KThread> WaitingThreads;
- private int _waitingThreadsCount;
+ private int WaitingThreadsCount;
- private Horizon _system;
+ private Horizon System;
- public KResourceLimit(Horizon system)
+ public KResourceLimit(Horizon System)
{
- _current = new long[(int)LimitableResource.Count];
- _limit = new long[(int)LimitableResource.Count];
- _available = new long[(int)LimitableResource.Count];
+ Current = new long[(int)LimitableResource.Count];
+ Limit = new long[(int)LimitableResource.Count];
+ Available = new long[(int)LimitableResource.Count];
- _lockObj = new object();
+ LockObj = new object();
- _waitingThreads = new LinkedList<KThread>();
+ WaitingThreads = new LinkedList<KThread>();
- _system = system;
+ this.System = System;
}
- public bool Reserve(LimitableResource resource, ulong amount)
+ public bool Reserve(LimitableResource Resource, ulong Amount)
{
- return Reserve(resource, (long)amount);
+ return Reserve(Resource, (long)Amount);
}
- public bool Reserve(LimitableResource resource, long amount)
+ public bool Reserve(LimitableResource Resource, long Amount)
{
- return Reserve(resource, amount, KTimeManager.ConvertMillisecondsToNanoseconds(Time10SecondsMs));
+ return Reserve(Resource, Amount, KTimeManager.ConvertMillisecondsToNanoseconds(Time10SecondsMs));
}
- public bool Reserve(LimitableResource resource, long amount, long timeout)
+ public bool Reserve(LimitableResource Resource, long Amount, long Timeout)
{
- long endTimePoint = KTimeManager.ConvertNanosecondsToMilliseconds(timeout);
+ long EndTimePoint = KTimeManager.ConvertNanosecondsToMilliseconds(Timeout);
- endTimePoint += PerformanceCounter.ElapsedMilliseconds;
+ EndTimePoint += PerformanceCounter.ElapsedMilliseconds;
- bool success = false;
+ bool Success = false;
- int index = GetIndex(resource);
+ int Index = GetIndex(Resource);
- lock (_lockObj)
+ lock (LockObj)
{
- long newCurrent = _current[index] + amount;
+ long NewCurrent = Current[Index] + Amount;
- while (newCurrent > _limit[index] && _available[index] + amount <= _limit[index])
+ while (NewCurrent > Limit[Index] && Available[Index] + Amount <= Limit[Index])
{
- _waitingThreadsCount++;
+ WaitingThreadsCount++;
- KConditionVariable.Wait(_system, _waitingThreads, _lockObj, timeout);
+ KConditionVariable.Wait(System, WaitingThreads, LockObj, Timeout);
- _waitingThreadsCount--;
+ WaitingThreadsCount--;
- newCurrent = _current[index] + amount;
+ NewCurrent = Current[Index] + Amount;
- if (timeout >= 0 && PerformanceCounter.ElapsedMilliseconds > endTimePoint)
+ if (Timeout >= 0 && PerformanceCounter.ElapsedMilliseconds > EndTimePoint)
{
break;
}
}
- if (newCurrent <= _limit[index])
+ if (NewCurrent <= Limit[Index])
{
- _current[index] = newCurrent;
+ Current[Index] = NewCurrent;
- success = true;
+ Success = true;
}
}
- return success;
+ return Success;
}
- public void Release(LimitableResource resource, ulong amount)
+ public void Release(LimitableResource Resource, ulong Amount)
{
- Release(resource, (long)amount);
+ Release(Resource, (long)Amount);
}
- public void Release(LimitableResource resource, long amount)
+ public void Release(LimitableResource Resource, long Amount)
{
- Release(resource, amount, amount);
+ Release(Resource, Amount, Amount);
}
- private void Release(LimitableResource resource, long usedAmount, long availableAmount)
+ private void Release(LimitableResource Resource, long UsedAmount, long AvailableAmount)
{
- int index = GetIndex(resource);
+ int Index = GetIndex(Resource);
- lock (_lockObj)
+ lock (LockObj)
{
- _current [index] -= usedAmount;
- _available[index] -= availableAmount;
+ Current [Index] -= UsedAmount;
+ Available[Index] -= AvailableAmount;
- if (_waitingThreadsCount > 0)
+ if (WaitingThreadsCount > 0)
{
- KConditionVariable.NotifyAll(_system, _waitingThreads);
+ KConditionVariable.NotifyAll(System, WaitingThreads);
}
}
}
- public long GetRemainingValue(LimitableResource resource)
+ public long GetRemainingValue(LimitableResource Resource)
{
- int index = GetIndex(resource);
+ int Index = GetIndex(Resource);
- lock (_lockObj)
+ lock (LockObj)
{
- return _limit[index] - _current[index];
+ return Limit[Index] - Current[Index];
}
}
- public KernelResult SetLimitValue(LimitableResource resource, long limit)
+ public KernelResult SetLimitValue(LimitableResource Resource, long Limit)
{
- int index = GetIndex(resource);
+ int Index = GetIndex(Resource);
- lock (_lockObj)
+ lock (LockObj)
{
- if (_current[index] <= limit)
+ if (Current[Index] <= Limit)
{
- _limit[index] = limit;
+ this.Limit[Index] = Limit;
return KernelResult.Success;
}
@@ -138,9 +138,9 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- private static int GetIndex(LimitableResource resource)
+ private static int GetIndex(LimitableResource Resource)
{
- return (int)resource;
+ return (int)Resource;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KScheduler.cs b/Ryujinx.HLE/HOS/Kernel/KScheduler.cs
index 43f1a994..3342f4a6 100644
--- a/Ryujinx.HLE/HOS/Kernel/KScheduler.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KScheduler.cs
@@ -12,17 +12,17 @@ namespace Ryujinx.HLE.HOS.Kernel
private const int PreemptionPriorityCores012 = 59;
private const int PreemptionPriorityCore3 = 63;
- private Horizon _system;
+ private Horizon System;
- public KSchedulingData SchedulingData { get; }
+ public KSchedulingData SchedulingData { get; private set; }
- public KCoreContext[] CoreContexts { get; }
+ public KCoreContext[] CoreContexts { get; private set; }
public bool ThreadReselectionRequested { get; set; }
- public KScheduler(Horizon system)
+ public KScheduler(Horizon System)
{
- _system = system;
+ this.System = System;
SchedulingData = new KSchedulingData();
@@ -30,87 +30,87 @@ namespace Ryujinx.HLE.HOS.Kernel
CoreContexts = new KCoreContext[CpuCoresCount];
- for (int core = 0; core < CpuCoresCount; core++)
+ for (int Core = 0; Core < CpuCoresCount; Core++)
{
- CoreContexts[core] = new KCoreContext(this, CoreManager);
+ CoreContexts[Core] = new KCoreContext(this, CoreManager);
}
}
private void PreemptThreads()
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
PreemptThread(PreemptionPriorityCores012, 0);
PreemptThread(PreemptionPriorityCores012, 1);
PreemptThread(PreemptionPriorityCores012, 2);
PreemptThread(PreemptionPriorityCore3, 3);
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
}
- private void PreemptThread(int prio, int core)
+ private void PreemptThread(int Prio, int Core)
{
- IEnumerable<KThread> scheduledThreads = SchedulingData.ScheduledThreads(core);
+ IEnumerable<KThread> ScheduledThreads = SchedulingData.ScheduledThreads(Core);
- KThread selectedThread = scheduledThreads.FirstOrDefault(x => x.DynamicPriority == prio);
+ KThread SelectedThread = ScheduledThreads.FirstOrDefault(x => x.DynamicPriority == Prio);
//Yield priority queue.
- if (selectedThread != null)
+ if (SelectedThread != null)
{
- SchedulingData.Reschedule(prio, core, selectedThread);
+ SchedulingData.Reschedule(Prio, Core, SelectedThread);
}
IEnumerable<KThread> SuitableCandidates()
{
- foreach (KThread thread in SchedulingData.SuggestedThreads(core))
+ foreach (KThread Thread in SchedulingData.SuggestedThreads(Core))
{
- int srcCore = thread.CurrentCore;
+ int SrcCore = Thread.CurrentCore;
- if (srcCore >= 0)
+ if (SrcCore >= 0)
{
- KThread highestPrioSrcCore = SchedulingData.ScheduledThreads(srcCore).FirstOrDefault();
+ KThread HighestPrioSrcCore = SchedulingData.ScheduledThreads(SrcCore).FirstOrDefault();
- if (highestPrioSrcCore != null && highestPrioSrcCore.DynamicPriority < 2)
+ if (HighestPrioSrcCore != null && HighestPrioSrcCore.DynamicPriority < 2)
{
break;
}
- if (highestPrioSrcCore == thread)
+ if (HighestPrioSrcCore == Thread)
{
continue;
}
}
//If the candidate was scheduled after the current thread, then it's not worth it.
- if (selectedThread == null || selectedThread.LastScheduledTime >= thread.LastScheduledTime)
+ if (SelectedThread == null || SelectedThread.LastScheduledTime >= Thread.LastScheduledTime)
{
- yield return thread;
+ yield return Thread;
}
}
}
//Select candidate threads that could run on this core.
//Only take into account threads that are not yet selected.
- KThread dst = SuitableCandidates().FirstOrDefault(x => x.DynamicPriority == prio);
+ KThread Dst = SuitableCandidates().FirstOrDefault(x => x.DynamicPriority == Prio);
- if (dst != null)
+ if (Dst != null)
{
- SchedulingData.TransferToCore(prio, core, dst);
+ SchedulingData.TransferToCore(Prio, Core, Dst);
- selectedThread = dst;
+ SelectedThread = Dst;
}
//If the priority of the currently selected thread is lower than preemption priority,
//then allow threads with lower priorities to be selected aswell.
- if (selectedThread != null && selectedThread.DynamicPriority > prio)
+ if (SelectedThread != null && SelectedThread.DynamicPriority > Prio)
{
- Func<KThread, bool> predicate = x => x.DynamicPriority >= selectedThread.DynamicPriority;
+ Func<KThread, bool> Predicate = x => x.DynamicPriority >= SelectedThread.DynamicPriority;
- dst = SuitableCandidates().FirstOrDefault(predicate);
+ Dst = SuitableCandidates().FirstOrDefault(Predicate);
- if (dst != null)
+ if (Dst != null)
{
- SchedulingData.TransferToCore(dst.DynamicPriority, core, dst);
+ SchedulingData.TransferToCore(Dst.DynamicPriority, Core, Dst);
}
}
@@ -121,52 +121,52 @@ namespace Ryujinx.HLE.HOS.Kernel
{
ThreadReselectionRequested = false;
- for (int core = 0; core < CpuCoresCount; core++)
+ for (int Core = 0; Core < CpuCoresCount; Core++)
{
- KThread thread = SchedulingData.ScheduledThreads(core).FirstOrDefault();
+ KThread Thread = SchedulingData.ScheduledThreads(Core).FirstOrDefault();
- CoreContexts[core].SelectThread(thread);
+ CoreContexts[Core].SelectThread(Thread);
}
- for (int core = 0; core < CpuCoresCount; core++)
+ for (int Core = 0; Core < CpuCoresCount; Core++)
{
//If the core is not idle (there's already a thread running on it),
//then we don't need to attempt load balancing.
- if (SchedulingData.ScheduledThreads(core).Any())
+ if (SchedulingData.ScheduledThreads(Core).Any())
{
continue;
}
- int[] srcCoresHighestPrioThreads = new int[CpuCoresCount];
+ int[] SrcCoresHighestPrioThreads = new int[CpuCoresCount];
- int srcCoresHighestPrioThreadsCount = 0;
+ int SrcCoresHighestPrioThreadsCount = 0;
- KThread dst = null;
+ KThread Dst = null;
//Select candidate threads that could run on this core.
//Give preference to threads that are not yet selected.
- foreach (KThread thread in SchedulingData.SuggestedThreads(core))
+ foreach (KThread Thread in SchedulingData.SuggestedThreads(Core))
{
- if (thread.CurrentCore < 0 || thread != CoreContexts[thread.CurrentCore].SelectedThread)
+ if (Thread.CurrentCore < 0 || Thread != CoreContexts[Thread.CurrentCore].SelectedThread)
{
- dst = thread;
+ Dst = Thread;
break;
}
- srcCoresHighestPrioThreads[srcCoresHighestPrioThreadsCount++] = thread.CurrentCore;
+ SrcCoresHighestPrioThreads[SrcCoresHighestPrioThreadsCount++] = Thread.CurrentCore;
}
//Not yet selected candidate found.
- if (dst != null)
+ if (Dst != null)
{
//Priorities < 2 are used for the kernel message dispatching
//threads, we should skip load balancing entirely.
- if (dst.DynamicPriority >= 2)
+ if (Dst.DynamicPriority >= 2)
{
- SchedulingData.TransferToCore(dst.DynamicPriority, core, dst);
+ SchedulingData.TransferToCore(Dst.DynamicPriority, Core, Dst);
- CoreContexts[core].SelectThread(dst);
+ CoreContexts[Core].SelectThread(Dst);
}
continue;
@@ -174,23 +174,23 @@ namespace Ryujinx.HLE.HOS.Kernel
//All candiates are already selected, choose the best one
//(the first one that doesn't make the source core idle if moved).
- for (int index = 0; index < srcCoresHighestPrioThreadsCount; index++)
+ for (int Index = 0; Index < SrcCoresHighestPrioThreadsCount; Index++)
{
- int srcCore = srcCoresHighestPrioThreads[index];
+ int SrcCore = SrcCoresHighestPrioThreads[Index];
- KThread src = SchedulingData.ScheduledThreads(srcCore).ElementAtOrDefault(1);
+ KThread Src = SchedulingData.ScheduledThreads(SrcCore).ElementAtOrDefault(1);
- if (src != null)
+ if (Src != null)
{
//Run the second thread on the queue on the source core,
//move the first one to the current core.
- KThread origSelectedCoreSrc = CoreContexts[srcCore].SelectedThread;
+ KThread OrigSelectedCoreSrc = CoreContexts[SrcCore].SelectedThread;
- CoreContexts[srcCore].SelectThread(src);
+ CoreContexts[SrcCore].SelectThread(Src);
- SchedulingData.TransferToCore(origSelectedCoreSrc.DynamicPriority, core, origSelectedCoreSrc);
+ SchedulingData.TransferToCore(OrigSelectedCoreSrc.DynamicPriority, Core, OrigSelectedCoreSrc);
- CoreContexts[core].SelectThread(origSelectedCoreSrc);
+ CoreContexts[Core].SelectThread(OrigSelectedCoreSrc);
}
}
}
@@ -200,11 +200,11 @@ namespace Ryujinx.HLE.HOS.Kernel
{
lock (CoreContexts)
{
- for (int core = 0; core < CpuCoresCount; core++)
+ for (int Core = 0; Core < CpuCoresCount; Core++)
{
- if (CoreContexts[core].CurrentThread?.Context.IsCurrentThread() ?? false)
+ if (CoreContexts[Core].CurrentThread?.Context.IsCurrentThread() ?? false)
{
- return CoreContexts[core].CurrentThread;
+ return CoreContexts[Core].CurrentThread;
}
}
}
@@ -222,11 +222,11 @@ namespace Ryujinx.HLE.HOS.Kernel
Dispose(true);
}
- protected virtual void Dispose(bool disposing)
+ protected virtual void Dispose(bool Disposing)
{
- if (disposing)
+ if (Disposing)
{
- _keepPreempting = false;
+ KeepPreempting = false;
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KSchedulingData.cs b/Ryujinx.HLE/HOS/Kernel/KSchedulingData.cs
index 65116036..ba2730a2 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSchedulingData.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSchedulingData.cs
@@ -4,204 +4,204 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KSchedulingData
{
- private LinkedList<KThread>[][] _scheduledThreadsPerPrioPerCore;
- private LinkedList<KThread>[][] _suggestedThreadsPerPrioPerCore;
+ private LinkedList<KThread>[][] ScheduledThreadsPerPrioPerCore;
+ private LinkedList<KThread>[][] SuggestedThreadsPerPrioPerCore;
- private long[] _scheduledPrioritiesPerCore;
- private long[] _suggestedPrioritiesPerCore;
+ private long[] ScheduledPrioritiesPerCore;
+ private long[] SuggestedPrioritiesPerCore;
public KSchedulingData()
{
- _suggestedThreadsPerPrioPerCore = new LinkedList<KThread>[KScheduler.PrioritiesCount][];
- _scheduledThreadsPerPrioPerCore = new LinkedList<KThread>[KScheduler.PrioritiesCount][];
+ SuggestedThreadsPerPrioPerCore = new LinkedList<KThread>[KScheduler.PrioritiesCount][];
+ ScheduledThreadsPerPrioPerCore = new LinkedList<KThread>[KScheduler.PrioritiesCount][];
- for (int prio = 0; prio < KScheduler.PrioritiesCount; prio++)
+ for (int Prio = 0; Prio < KScheduler.PrioritiesCount; Prio++)
{
- _suggestedThreadsPerPrioPerCore[prio] = new LinkedList<KThread>[KScheduler.CpuCoresCount];
- _scheduledThreadsPerPrioPerCore[prio] = new LinkedList<KThread>[KScheduler.CpuCoresCount];
+ SuggestedThreadsPerPrioPerCore[Prio] = new LinkedList<KThread>[KScheduler.CpuCoresCount];
+ ScheduledThreadsPerPrioPerCore[Prio] = new LinkedList<KThread>[KScheduler.CpuCoresCount];
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- _suggestedThreadsPerPrioPerCore[prio][core] = new LinkedList<KThread>();
- _scheduledThreadsPerPrioPerCore[prio][core] = new LinkedList<KThread>();
+ SuggestedThreadsPerPrioPerCore[Prio][Core] = new LinkedList<KThread>();
+ ScheduledThreadsPerPrioPerCore[Prio][Core] = new LinkedList<KThread>();
}
}
- _scheduledPrioritiesPerCore = new long[KScheduler.CpuCoresCount];
- _suggestedPrioritiesPerCore = new long[KScheduler.CpuCoresCount];
+ ScheduledPrioritiesPerCore = new long[KScheduler.CpuCoresCount];
+ SuggestedPrioritiesPerCore = new long[KScheduler.CpuCoresCount];
}
- public IEnumerable<KThread> SuggestedThreads(int core)
+ public IEnumerable<KThread> SuggestedThreads(int Core)
{
- return Iterate(_suggestedThreadsPerPrioPerCore, _suggestedPrioritiesPerCore, core);
+ return Iterate(SuggestedThreadsPerPrioPerCore, SuggestedPrioritiesPerCore, Core);
}
- public IEnumerable<KThread> ScheduledThreads(int core)
+ public IEnumerable<KThread> ScheduledThreads(int Core)
{
- return Iterate(_scheduledThreadsPerPrioPerCore, _scheduledPrioritiesPerCore, core);
+ return Iterate(ScheduledThreadsPerPrioPerCore, ScheduledPrioritiesPerCore, Core);
}
- private IEnumerable<KThread> Iterate(LinkedList<KThread>[][] listPerPrioPerCore, long[] prios, int core)
+ private IEnumerable<KThread> Iterate(LinkedList<KThread>[][] ListPerPrioPerCore, long[] Prios, int Core)
{
- long prioMask = prios[core];
+ long PrioMask = Prios[Core];
- int prio = CountTrailingZeros(prioMask);
+ int Prio = CountTrailingZeros(PrioMask);
- prioMask &= ~(1L << prio);
+ PrioMask &= ~(1L << Prio);
- while (prio < KScheduler.PrioritiesCount)
+ while (Prio < KScheduler.PrioritiesCount)
{
- LinkedList<KThread> list = listPerPrioPerCore[prio][core];
+ LinkedList<KThread> List = ListPerPrioPerCore[Prio][Core];
- LinkedListNode<KThread> node = list.First;
+ LinkedListNode<KThread> Node = List.First;
- while (node != null)
+ while (Node != null)
{
- yield return node.Value;
+ yield return Node.Value;
- node = node.Next;
+ Node = Node.Next;
}
- prio = CountTrailingZeros(prioMask);
+ Prio = CountTrailingZeros(PrioMask);
- prioMask &= ~(1L << prio);
+ PrioMask &= ~(1L << Prio);
}
}
- private int CountTrailingZeros(long value)
+ private int CountTrailingZeros(long Value)
{
- int count = 0;
+ int Count = 0;
- while (((value >> count) & 0xf) == 0 && count < 64)
+ while (((Value >> Count) & 0xf) == 0 && Count < 64)
{
- count += 4;
+ Count += 4;
}
- while (((value >> count) & 1) == 0 && count < 64)
+ while (((Value >> Count) & 1) == 0 && Count < 64)
{
- count++;
+ Count++;
}
- return count;
+ return Count;
}
- public void TransferToCore(int prio, int dstCore, KThread thread)
+ public void TransferToCore(int Prio, int DstCore, KThread Thread)
{
- bool schedulable = thread.DynamicPriority < KScheduler.PrioritiesCount;
+ bool Schedulable = Thread.DynamicPriority < KScheduler.PrioritiesCount;
- int srcCore = thread.CurrentCore;
+ int SrcCore = Thread.CurrentCore;
- thread.CurrentCore = dstCore;
+ Thread.CurrentCore = DstCore;
- if (srcCore == dstCore || !schedulable)
+ if (SrcCore == DstCore || !Schedulable)
{
return;
}
- if (srcCore >= 0)
+ if (SrcCore >= 0)
{
- Unschedule(prio, srcCore, thread);
+ Unschedule(Prio, SrcCore, Thread);
}
- if (dstCore >= 0)
+ if (DstCore >= 0)
{
- Unsuggest(prio, dstCore, thread);
- Schedule(prio, dstCore, thread);
+ Unsuggest(Prio, DstCore, Thread);
+ Schedule(Prio, DstCore, Thread);
}
- if (srcCore >= 0)
+ if (SrcCore >= 0)
{
- Suggest(prio, srcCore, thread);
+ Suggest(Prio, SrcCore, Thread);
}
}
- public void Suggest(int prio, int core, KThread thread)
+ public void Suggest(int Prio, int Core, KThread Thread)
{
- if (prio >= KScheduler.PrioritiesCount)
+ if (Prio >= KScheduler.PrioritiesCount)
{
return;
}
- thread.SiblingsPerCore[core] = SuggestedQueue(prio, core).AddFirst(thread);
+ Thread.SiblingsPerCore[Core] = SuggestedQueue(Prio, Core).AddFirst(Thread);
- _suggestedPrioritiesPerCore[core] |= 1L << prio;
+ SuggestedPrioritiesPerCore[Core] |= 1L << Prio;
}
- public void Unsuggest(int prio, int core, KThread thread)
+ public void Unsuggest(int Prio, int Core, KThread Thread)
{
- if (prio >= KScheduler.PrioritiesCount)
+ if (Prio >= KScheduler.PrioritiesCount)
{
return;
}
- LinkedList<KThread> queue = SuggestedQueue(prio, core);
+ LinkedList<KThread> Queue = SuggestedQueue(Prio, Core);
- queue.Remove(thread.SiblingsPerCore[core]);
+ Queue.Remove(Thread.SiblingsPerCore[Core]);
- if (queue.First == null)
+ if (Queue.First == null)
{
- _suggestedPrioritiesPerCore[core] &= ~(1L << prio);
+ SuggestedPrioritiesPerCore[Core] &= ~(1L << Prio);
}
}
- public void Schedule(int prio, int core, KThread thread)
+ public void Schedule(int Prio, int Core, KThread Thread)
{
- if (prio >= KScheduler.PrioritiesCount)
+ if (Prio >= KScheduler.PrioritiesCount)
{
return;
}
- thread.SiblingsPerCore[core] = ScheduledQueue(prio, core).AddLast(thread);
+ Thread.SiblingsPerCore[Core] = ScheduledQueue(Prio, Core).AddLast(Thread);
- _scheduledPrioritiesPerCore[core] |= 1L << prio;
+ ScheduledPrioritiesPerCore[Core] |= 1L << Prio;
}
- public void SchedulePrepend(int prio, int core, KThread thread)
+ public void SchedulePrepend(int Prio, int Core, KThread Thread)
{
- if (prio >= KScheduler.PrioritiesCount)
+ if (Prio >= KScheduler.PrioritiesCount)
{
return;
}
- thread.SiblingsPerCore[core] = ScheduledQueue(prio, core).AddFirst(thread);
+ Thread.SiblingsPerCore[Core] = ScheduledQueue(Prio, Core).AddFirst(Thread);
- _scheduledPrioritiesPerCore[core] |= 1L << prio;
+ ScheduledPrioritiesPerCore[Core] |= 1L << Prio;
}
- public void Reschedule(int prio, int core, KThread thread)
+ public void Reschedule(int Prio, int Core, KThread Thread)
{
- LinkedList<KThread> queue = ScheduledQueue(prio, core);
+ LinkedList<KThread> Queue = ScheduledQueue(Prio, Core);
- queue.Remove(thread.SiblingsPerCore[core]);
+ Queue.Remove(Thread.SiblingsPerCore[Core]);
- thread.SiblingsPerCore[core] = queue.AddLast(thread);
+ Thread.SiblingsPerCore[Core] = Queue.AddLast(Thread);
}
- public void Unschedule(int prio, int core, KThread thread)
+ public void Unschedule(int Prio, int Core, KThread Thread)
{
- if (prio >= KScheduler.PrioritiesCount)
+ if (Prio >= KScheduler.PrioritiesCount)
{
return;
}
- LinkedList<KThread> queue = ScheduledQueue(prio, core);
+ LinkedList<KThread> Queue = ScheduledQueue(Prio, Core);
- queue.Remove(thread.SiblingsPerCore[core]);
+ Queue.Remove(Thread.SiblingsPerCore[Core]);
- if (queue.First == null)
+ if (Queue.First == null)
{
- _scheduledPrioritiesPerCore[core] &= ~(1L << prio);
+ ScheduledPrioritiesPerCore[Core] &= ~(1L << Prio);
}
}
- private LinkedList<KThread> SuggestedQueue(int prio, int core)
+ private LinkedList<KThread> SuggestedQueue(int Prio, int Core)
{
- return _suggestedThreadsPerPrioPerCore[prio][core];
+ return SuggestedThreadsPerPrioPerCore[Prio][Core];
}
- private LinkedList<KThread> ScheduledQueue(int prio, int core)
+ private LinkedList<KThread> ScheduledQueue(int Prio, int Core)
{
- return _scheduledThreadsPerPrioPerCore[prio][core];
+ return ScheduledThreadsPerPrioPerCore[Prio][Core];
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KServerPort.cs b/Ryujinx.HLE/HOS/Kernel/KServerPort.cs
index 0aa74e48..42135cd8 100644
--- a/Ryujinx.HLE/HOS/Kernel/KServerPort.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KServerPort.cs
@@ -2,13 +2,13 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KServerPort : KSynchronizationObject
{
- private KPort _parent;
+ private KPort Parent;
- public KServerPort(Horizon system) : base(system) { }
+ public KServerPort(Horizon System) : base(System) { }
- public void Initialize(KPort parent)
+ public void Initialize(KPort Parent)
{
- _parent = parent;
+ this.Parent = Parent;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KSession.cs b/Ryujinx.HLE/HOS/Kernel/KSession.cs
index a350b323..4b21d3a6 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSession.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSession.cs
@@ -5,14 +5,14 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KSession : IDisposable
{
- public IpcService Service { get; }
+ public IpcService Service { get; private set; }
- public string ServiceName { get; }
+ public string ServiceName { get; private set; }
- public KSession(IpcService service, string serviceName)
+ public KSession(IpcService Service, string ServiceName)
{
- Service = service;
- ServiceName = serviceName;
+ this.Service = Service;
+ this.ServiceName = ServiceName;
}
public void Dispose()
@@ -20,11 +20,11 @@ namespace Ryujinx.HLE.HOS.Kernel
Dispose(true);
}
- protected virtual void Dispose(bool disposing)
+ protected virtual void Dispose(bool Disposing)
{
- if (disposing && Service is IDisposable disposableService)
+ if (Disposing && Service is IDisposable DisposableService)
{
- disposableService.Dispose();
+ DisposableService.Dispose();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KSharedMemory.cs b/Ryujinx.HLE/HOS/Kernel/KSharedMemory.cs
index 0e9f8840..a440438b 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSharedMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSharedMemory.cs
@@ -4,65 +4,65 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KSharedMemory
{
- private KPageList _pageList;
+ private KPageList PageList;
- private long _ownerPid;
+ private long OwnerPid;
- private MemoryPermission _ownerPermission;
- private MemoryPermission _userPermission;
+ private MemoryPermission OwnerPermission;
+ private MemoryPermission UserPermission;
public KSharedMemory(
- KPageList pageList,
- long ownerPid,
- MemoryPermission ownerPermission,
- MemoryPermission userPermission)
+ KPageList PageList,
+ long OwnerPid,
+ MemoryPermission OwnerPermission,
+ MemoryPermission UserPermission)
{
- _pageList = pageList;
- _ownerPid = ownerPid;
- _ownerPermission = ownerPermission;
- _userPermission = userPermission;
+ this.PageList = PageList;
+ this.OwnerPid = OwnerPid;
+ this.OwnerPermission = OwnerPermission;
+ this.UserPermission = UserPermission;
}
public KernelResult MapIntoProcess(
- KMemoryManager memoryManager,
- ulong address,
- ulong size,
- KProcess process,
- MemoryPermission permission)
+ KMemoryManager MemoryManager,
+ ulong Address,
+ ulong Size,
+ KProcess Process,
+ MemoryPermission Permission)
{
- ulong pagesCountRounded = BitUtils.DivRoundUp(size, KMemoryManager.PageSize);
+ ulong PagesCountRounded = BitUtils.DivRoundUp(Size, KMemoryManager.PageSize);
- if (_pageList.GetPagesCount() != pagesCountRounded)
+ if (PageList.GetPagesCount() != PagesCountRounded)
{
return KernelResult.InvalidSize;
}
- MemoryPermission expectedPermission = process.Pid == _ownerPid
- ? _ownerPermission
- : _userPermission;
+ MemoryPermission ExpectedPermission = Process.Pid == OwnerPid
+ ? OwnerPermission
+ : UserPermission;
- if (permission != expectedPermission)
+ if (Permission != ExpectedPermission)
{
return KernelResult.InvalidPermission;
}
- return memoryManager.MapPages(address, _pageList, MemoryState.SharedMemory, permission);
+ return MemoryManager.MapPages(Address, PageList, MemoryState.SharedMemory, Permission);
}
public KernelResult UnmapFromProcess(
- KMemoryManager memoryManager,
- ulong address,
- ulong size,
- KProcess process)
+ KMemoryManager MemoryManager,
+ ulong Address,
+ ulong Size,
+ KProcess Process)
{
- ulong pagesCountRounded = BitUtils.DivRoundUp(size, KMemoryManager.PageSize);
+ ulong PagesCountRounded = BitUtils.DivRoundUp(Size, KMemoryManager.PageSize);
- if (_pageList.GetPagesCount() != pagesCountRounded)
+ if (PageList.GetPagesCount() != PagesCountRounded)
{
return KernelResult.InvalidSize;
}
- return memoryManager.UnmapPages(address, _pageList, MemoryState.SharedMemory);
+ return MemoryManager.UnmapPages(Address, PageList, MemoryState.SharedMemory);
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KSlabHeap.cs b/Ryujinx.HLE/HOS/Kernel/KSlabHeap.cs
index 84c4dc01..2d6b3ca0 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSlabHeap.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSlabHeap.cs
@@ -4,46 +4,46 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KSlabHeap
{
- private LinkedList<ulong> _items;
+ private LinkedList<ulong> Items;
- public KSlabHeap(ulong pa, ulong itemSize, ulong size)
+ public KSlabHeap(ulong Pa, ulong ItemSize, ulong Size)
{
- _items = new LinkedList<ulong>();
+ Items = new LinkedList<ulong>();
- int itemsCount = (int)(size / itemSize);
+ int ItemsCount = (int)(Size / ItemSize);
- for (int index = 0; index < itemsCount; index++)
+ for (int Index = 0; Index < ItemsCount; Index++)
{
- _items.AddLast(pa);
+ Items.AddLast(Pa);
- pa += itemSize;
+ Pa += ItemSize;
}
}
- public bool TryGetItem(out ulong pa)
+ public bool TryGetItem(out ulong Pa)
{
- lock (_items)
+ lock (Items)
{
- if (_items.First != null)
+ if (Items.First != null)
{
- pa = _items.First.Value;
+ Pa = Items.First.Value;
- _items.RemoveFirst();
+ Items.RemoveFirst();
return true;
}
}
- pa = 0;
+ Pa = 0;
return false;
}
- public void Free(ulong pa)
+ public void Free(ulong Pa)
{
- lock (_items)
+ lock (Items)
{
- _items.AddFirst(pa);
+ Items.AddFirst(Pa);
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KSynchronization.cs b/Ryujinx.HLE/HOS/Kernel/KSynchronization.cs
index 51b74a03..19e700f4 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSynchronization.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSynchronization.cs
@@ -6,130 +6,130 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KSynchronization
{
- private Horizon _system;
+ private Horizon System;
- public KSynchronization(Horizon system)
+ public KSynchronization(Horizon System)
{
- _system = system;
+ this.System = System;
}
- public long WaitFor(KSynchronizationObject[] syncObjs, long timeout, ref int hndIndex)
+ public long WaitFor(KSynchronizationObject[] SyncObjs, long Timeout, ref int HndIndex)
{
- long result = MakeError(ErrorModule.Kernel, KernelErr.Timeout);
+ long Result = MakeError(ErrorModule.Kernel, KernelErr.Timeout);
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
//Check if objects are already signaled before waiting.
- for (int index = 0; index < syncObjs.Length; index++)
+ for (int Index = 0; Index < SyncObjs.Length; Index++)
{
- if (!syncObjs[index].IsSignaled())
+ if (!SyncObjs[Index].IsSignaled())
{
continue;
}
- hndIndex = index;
+ HndIndex = Index;
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
return 0;
}
- if (timeout == 0)
+ if (Timeout == 0)
{
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return result;
+ return Result;
}
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- if (currentThread.ShallBeTerminated ||
- currentThread.SchedFlags == ThreadSchedState.TerminationPending)
+ if (CurrentThread.ShallBeTerminated ||
+ CurrentThread.SchedFlags == ThreadSchedState.TerminationPending)
{
- result = MakeError(ErrorModule.Kernel, KernelErr.ThreadTerminating);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.ThreadTerminating);
}
- else if (currentThread.SyncCancelled)
+ else if (CurrentThread.SyncCancelled)
{
- currentThread.SyncCancelled = false;
+ CurrentThread.SyncCancelled = false;
- result = MakeError(ErrorModule.Kernel, KernelErr.Cancelled);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.Cancelled);
}
else
{
- LinkedListNode<KThread>[] syncNodes = new LinkedListNode<KThread>[syncObjs.Length];
+ LinkedListNode<KThread>[] SyncNodes = new LinkedListNode<KThread>[SyncObjs.Length];
- for (int index = 0; index < syncObjs.Length; index++)
+ for (int Index = 0; Index < SyncObjs.Length; Index++)
{
- syncNodes[index] = syncObjs[index].AddWaitingThread(currentThread);
+ SyncNodes[Index] = SyncObjs[Index].AddWaitingThread(CurrentThread);
}
- currentThread.WaitingSync = true;
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = (int)result;
+ CurrentThread.WaitingSync = true;
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = (int)Result;
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
+ System.TimeManager.ScheduleFutureInvocation(CurrentThread, Timeout);
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- currentThread.WaitingSync = false;
+ CurrentThread.WaitingSync = false;
- if (timeout > 0)
+ if (Timeout > 0)
{
- _system.TimeManager.UnscheduleFutureInvocation(currentThread);
+ System.TimeManager.UnscheduleFutureInvocation(CurrentThread);
}
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- result = (uint)currentThread.ObjSyncResult;
+ Result = (uint)CurrentThread.ObjSyncResult;
- hndIndex = -1;
+ HndIndex = -1;
- for (int index = 0; index < syncObjs.Length; index++)
+ for (int Index = 0; Index < SyncObjs.Length; Index++)
{
- syncObjs[index].RemoveWaitingThread(syncNodes[index]);
+ SyncObjs[Index].RemoveWaitingThread(SyncNodes[Index]);
- if (syncObjs[index] == currentThread.SignaledObj)
+ if (SyncObjs[Index] == CurrentThread.SignaledObj)
{
- hndIndex = index;
+ HndIndex = Index;
}
}
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- return result;
+ return Result;
}
- public void SignalObject(KSynchronizationObject syncObj)
+ public void SignalObject(KSynchronizationObject SyncObj)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- if (syncObj.IsSignaled())
+ if (SyncObj.IsSignaled())
{
- LinkedListNode<KThread> node = syncObj.WaitingThreads.First;
+ LinkedListNode<KThread> Node = SyncObj.WaitingThreads.First;
- while (node != null)
+ while (Node != null)
{
- KThread thread = node.Value;
+ KThread Thread = Node.Value;
- if ((thread.SchedFlags & ThreadSchedState.LowMask) == ThreadSchedState.Paused)
+ if ((Thread.SchedFlags & ThreadSchedState.LowMask) == ThreadSchedState.Paused)
{
- thread.SignaledObj = syncObj;
- thread.ObjSyncResult = 0;
+ Thread.SignaledObj = SyncObj;
+ Thread.ObjSyncResult = 0;
- thread.Reschedule(ThreadSchedState.Running);
+ Thread.Reschedule(ThreadSchedState.Running);
}
- node = node.Next;
+ Node = Node.Next;
}
}
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KSynchronizationObject.cs b/Ryujinx.HLE/HOS/Kernel/KSynchronizationObject.cs
index 79f0673f..5ba7784f 100644
--- a/Ryujinx.HLE/HOS/Kernel/KSynchronizationObject.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KSynchronizationObject.cs
@@ -6,19 +6,19 @@ namespace Ryujinx.HLE.HOS.Kernel
{
public LinkedList<KThread> WaitingThreads;
- public KSynchronizationObject(Horizon system) : base(system)
+ public KSynchronizationObject(Horizon System) : base(System)
{
WaitingThreads = new LinkedList<KThread>();
}
- public LinkedListNode<KThread> AddWaitingThread(KThread thread)
+ public LinkedListNode<KThread> AddWaitingThread(KThread Thread)
{
- return WaitingThreads.AddLast(thread);
+ return WaitingThreads.AddLast(Thread);
}
- public void RemoveWaitingThread(LinkedListNode<KThread> node)
+ public void RemoveWaitingThread(LinkedListNode<KThread> Node)
{
- WaitingThreads.Remove(node);
+ WaitingThreads.Remove(Node);
}
public virtual void Signal()
diff --git a/Ryujinx.HLE/HOS/Kernel/KThread.cs b/Ryujinx.HLE/HOS/Kernel/KThread.cs
index ae1e860f..88f144c8 100644
--- a/Ryujinx.HLE/HOS/Kernel/KThread.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KThread.cs
@@ -22,31 +22,31 @@ namespace Ryujinx.HLE.HOS.Kernel
public long CondVarAddress { get; set; }
- private ulong _entrypoint;
+ private ulong Entrypoint;
public long MutexAddress { get; set; }
public KProcess Owner { get; private set; }
- private ulong _tlsAddress;
+ private ulong TlsAddress;
public long LastScheduledTime { get; set; }
- public LinkedListNode<KThread>[] SiblingsPerCore { get; }
+ public LinkedListNode<KThread>[] SiblingsPerCore { get; private set; }
public LinkedList<KThread> Withholder { get; set; }
public LinkedListNode<KThread> WithholderNode { get; set; }
public LinkedListNode<KThread> ProcessListNode { get; set; }
- private LinkedList<KThread> _mutexWaiters;
- private LinkedListNode<KThread> _mutexWaiterNode;
+ private LinkedList<KThread> MutexWaiters;
+ private LinkedListNode<KThread> MutexWaiterNode;
public KThread MutexOwner { get; private set; }
public int ThreadHandleForUserMutex { get; set; }
- private ThreadSchedState _forcePauseFlags;
+ private ThreadSchedState ForcePauseFlags;
public int ObjSyncResult { get; set; }
@@ -55,9 +55,9 @@ namespace Ryujinx.HLE.HOS.Kernel
public int BasePriority { get; set; }
public int PreferredCore { get; set; }
- private long _affinityMaskOverride;
- private int _preferredCoreOverride;
- private int _affinityOverrideCount;
+ private long AffinityMaskOverride;
+ private int PreferredCoreOverride;
+ private int AffinityOverrideCount;
public ThreadSchedState SchedFlags { get; private set; }
@@ -66,101 +66,101 @@ namespace Ryujinx.HLE.HOS.Kernel
public bool SyncCancelled { get; set; }
public bool WaitingSync { get; set; }
- private bool _hasExited;
+ private bool HasExited;
public bool WaitingInArbitration { get; set; }
- private KScheduler _scheduler;
+ private KScheduler Scheduler;
- private KSchedulingData _schedulingData;
+ private KSchedulingData SchedulingData;
public long LastPc { get; set; }
- public KThread(Horizon system) : base(system)
+ public KThread(Horizon System) : base(System)
{
- _scheduler = system.Scheduler;
- _schedulingData = system.Scheduler.SchedulingData;
+ Scheduler = System.Scheduler;
+ SchedulingData = System.Scheduler.SchedulingData;
SiblingsPerCore = new LinkedListNode<KThread>[KScheduler.CpuCoresCount];
- _mutexWaiters = new LinkedList<KThread>();
+ MutexWaiters = new LinkedList<KThread>();
}
public KernelResult Initialize(
- ulong entrypoint,
- ulong argsPtr,
- ulong stackTop,
- int priority,
- int defaultCpuCore,
- KProcess owner,
- ThreadType type = ThreadType.User)
+ ulong Entrypoint,
+ ulong ArgsPtr,
+ ulong StackTop,
+ int Priority,
+ int DefaultCpuCore,
+ KProcess Owner,
+ ThreadType Type = ThreadType.User)
{
- if ((uint)type > 3)
+ if ((uint)Type > 3)
{
- throw new ArgumentException($"Invalid thread type \"{type}\".");
+ throw new ArgumentException($"Invalid thread type \"{Type}\".");
}
- PreferredCore = defaultCpuCore;
+ PreferredCore = DefaultCpuCore;
- AffinityMask |= 1L << defaultCpuCore;
+ AffinityMask |= 1L << DefaultCpuCore;
- SchedFlags = type == ThreadType.Dummy
+ SchedFlags = Type == ThreadType.Dummy
? ThreadSchedState.Running
: ThreadSchedState.None;
CurrentCore = PreferredCore;
- DynamicPriority = priority;
- BasePriority = priority;
+ DynamicPriority = Priority;
+ BasePriority = Priority;
ObjSyncResult = 0x7201;
- _entrypoint = entrypoint;
+ this.Entrypoint = Entrypoint;
- if (type == ThreadType.User)
+ if (Type == ThreadType.User)
{
- if (owner.AllocateThreadLocalStorage(out _tlsAddress) != KernelResult.Success)
+ if (Owner.AllocateThreadLocalStorage(out TlsAddress) != KernelResult.Success)
{
return KernelResult.OutOfMemory;
}
- MemoryHelper.FillWithZeros(owner.CpuMemory, (long)_tlsAddress, KTlsPageInfo.TlsEntrySize);
+ MemoryHelper.FillWithZeros(Owner.CpuMemory, (long)TlsAddress, KTlsPageInfo.TlsEntrySize);
}
- bool is64Bits;
+ bool Is64Bits;
- if (owner != null)
+ if (Owner != null)
{
- Owner = owner;
+ this.Owner = Owner;
- owner.IncrementThreadCount();
+ Owner.IncrementThreadCount();
- is64Bits = (owner.MmuFlags & 1) != 0;
+ Is64Bits = (Owner.MmuFlags & 1) != 0;
}
else
{
- is64Bits = true;
+ Is64Bits = true;
}
- Context = new CpuThread(owner.Translator, owner.CpuMemory, (long)entrypoint);
+ Context = new CpuThread(Owner.Translator, Owner.CpuMemory, (long)Entrypoint);
- Context.ThreadState.X0 = argsPtr;
- Context.ThreadState.X31 = stackTop;
+ Context.ThreadState.X0 = ArgsPtr;
+ Context.ThreadState.X31 = StackTop;
Context.ThreadState.CntfrqEl0 = 19200000;
- Context.ThreadState.Tpidr = (long)_tlsAddress;
+ Context.ThreadState.Tpidr = (long)TlsAddress;
- owner.SubscribeThreadEventHandlers(Context);
+ Owner.SubscribeThreadEventHandlers(Context);
Context.WorkFinished += ThreadFinishedHandler;
ThreadUid = System.GetThreadUid();
- if (owner != null)
+ if (Owner != null)
{
- owner.AddThread(this);
+ Owner.AddThread(this);
- if (owner.IsPaused)
+ if (Owner.IsPaused)
{
System.CriticalSection.Enter();
@@ -171,7 +171,7 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- _forcePauseFlags |= ThreadSchedState.ProcessPauseFlag;
+ ForcePauseFlags |= ThreadSchedState.ProcessPauseFlag;
CombineForcePauseFlags();
@@ -190,7 +190,7 @@ namespace Ryujinx.HLE.HOS.Kernel
if (!ShallBeTerminated && SchedFlags != ThreadSchedState.TerminationPending)
{
- _forcePauseFlags |= ThreadSchedState.KernelInitPauseFlag;
+ ForcePauseFlags |= ThreadSchedState.KernelInitPauseFlag;
CombineForcePauseFlags();
}
@@ -198,46 +198,46 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
}
- KernelResult result = KernelResult.ThreadTerminating;
+ KernelResult Result = KernelResult.ThreadTerminating;
System.CriticalSection.Enter();
if (!ShallBeTerminated)
{
- KThread currentThread = System.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
while (SchedFlags != ThreadSchedState.TerminationPending &&
- currentThread.SchedFlags != ThreadSchedState.TerminationPending &&
- !currentThread.ShallBeTerminated)
+ CurrentThread.SchedFlags != ThreadSchedState.TerminationPending &&
+ !CurrentThread.ShallBeTerminated)
{
if ((SchedFlags & ThreadSchedState.LowMask) != ThreadSchedState.None)
{
- result = KernelResult.InvalidState;
+ Result = KernelResult.InvalidState;
break;
}
- if (currentThread._forcePauseFlags == ThreadSchedState.None)
+ if (CurrentThread.ForcePauseFlags == ThreadSchedState.None)
{
- if (Owner != null && _forcePauseFlags != ThreadSchedState.None)
+ if (Owner != null && ForcePauseFlags != ThreadSchedState.None)
{
CombineForcePauseFlags();
}
SetNewSchedFlags(ThreadSchedState.Running);
- result = KernelResult.Success;
+ Result = KernelResult.Success;
break;
}
else
{
- currentThread.CombineForcePauseFlags();
+ CurrentThread.CombineForcePauseFlags();
System.CriticalSection.Leave();
System.CriticalSection.Enter();
- if (currentThread.ShallBeTerminated)
+ if (CurrentThread.ShallBeTerminated)
{
break;
}
@@ -247,14 +247,14 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
- return result;
+ return Result;
}
public void Exit()
{
System.CriticalSection.Enter();
- _forcePauseFlags &= ~ThreadSchedState.ForcePauseMask;
+ ForcePauseFlags &= ~ThreadSchedState.ForcePauseMask;
ExitImpl();
@@ -267,14 +267,14 @@ namespace Ryujinx.HLE.HOS.Kernel
SetNewSchedFlags(ThreadSchedState.TerminationPending);
- _hasExited = true;
+ HasExited = true;
Signal();
System.CriticalSection.Leave();
}
- public long Sleep(long timeout)
+ public long Sleep(long Timeout)
{
System.CriticalSection.Enter();
@@ -287,14 +287,14 @@ namespace Ryujinx.HLE.HOS.Kernel
SetNewSchedFlags(ThreadSchedState.Paused);
- if (timeout > 0)
+ if (Timeout > 0)
{
- System.TimeManager.ScheduleFutureInvocation(this, timeout);
+ System.TimeManager.ScheduleFutureInvocation(this, Timeout);
}
System.CriticalSection.Leave();
- if (timeout > 0)
+ if (Timeout > 0)
{
System.TimeManager.UnscheduleFutureInvocation(this);
}
@@ -318,10 +318,10 @@ namespace Ryujinx.HLE.HOS.Kernel
if (DynamicPriority < KScheduler.PrioritiesCount)
{
//Move current thread to the end of the queue.
- _schedulingData.Reschedule(DynamicPriority, CurrentCore, this);
+ SchedulingData.Reschedule(DynamicPriority, CurrentCore, this);
}
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
System.CriticalSection.Leave();
@@ -341,32 +341,32 @@ namespace Ryujinx.HLE.HOS.Kernel
return;
}
- int prio = DynamicPriority;
- int core = CurrentCore;
+ int Prio = DynamicPriority;
+ int Core = CurrentCore;
- KThread nextThreadOnCurrentQueue = null;
+ KThread NextThreadOnCurrentQueue = null;
if (DynamicPriority < KScheduler.PrioritiesCount)
{
//Move current thread to the end of the queue.
- _schedulingData.Reschedule(prio, core, this);
+ SchedulingData.Reschedule(Prio, Core, this);
- Func<KThread, bool> predicate = x => x.DynamicPriority == prio;
+ Func<KThread, bool> Predicate = x => x.DynamicPriority == Prio;
- nextThreadOnCurrentQueue = _schedulingData.ScheduledThreads(core).FirstOrDefault(predicate);
+ NextThreadOnCurrentQueue = SchedulingData.ScheduledThreads(Core).FirstOrDefault(Predicate);
}
IEnumerable<KThread> SuitableCandidates()
{
- foreach (KThread thread in _schedulingData.SuggestedThreads(core))
+ foreach (KThread Thread in SchedulingData.SuggestedThreads(Core))
{
- int srcCore = thread.CurrentCore;
+ int SrcCore = Thread.CurrentCore;
- if (srcCore >= 0)
+ if (SrcCore >= 0)
{
- KThread selectedSrcCore = _scheduler.CoreContexts[srcCore].SelectedThread;
+ KThread SelectedSrcCore = Scheduler.CoreContexts[SrcCore].SelectedThread;
- if (selectedSrcCore == thread || ((selectedSrcCore?.DynamicPriority ?? 2) < 2))
+ if (SelectedSrcCore == Thread || ((SelectedSrcCore?.DynamicPriority ?? 2) < 2))
{
continue;
}
@@ -374,26 +374,26 @@ namespace Ryujinx.HLE.HOS.Kernel
//If the candidate was scheduled after the current thread, then it's not worth it,
//unless the priority is higher than the current one.
- if (nextThreadOnCurrentQueue.LastScheduledTime >= thread.LastScheduledTime ||
- nextThreadOnCurrentQueue.DynamicPriority < thread.DynamicPriority)
+ if (NextThreadOnCurrentQueue.LastScheduledTime >= Thread.LastScheduledTime ||
+ NextThreadOnCurrentQueue.DynamicPriority < Thread.DynamicPriority)
{
- yield return thread;
+ yield return Thread;
}
}
}
- KThread dst = SuitableCandidates().FirstOrDefault(x => x.DynamicPriority <= prio);
+ KThread Dst = SuitableCandidates().FirstOrDefault(x => x.DynamicPriority <= Prio);
- if (dst != null)
+ if (Dst != null)
{
- _schedulingData.TransferToCore(dst.DynamicPriority, core, dst);
+ SchedulingData.TransferToCore(Dst.DynamicPriority, Core, Dst);
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
- if (this != nextThreadOnCurrentQueue)
+ if (this != NextThreadOnCurrentQueue)
{
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
System.CriticalSection.Leave();
@@ -414,42 +414,42 @@ namespace Ryujinx.HLE.HOS.Kernel
return;
}
- int core = CurrentCore;
+ int Core = CurrentCore;
- _schedulingData.TransferToCore(DynamicPriority, -1, this);
+ SchedulingData.TransferToCore(DynamicPriority, -1, this);
- KThread selectedThread = null;
+ KThread SelectedThread = null;
- if (!_schedulingData.ScheduledThreads(core).Any())
+ if (!SchedulingData.ScheduledThreads(Core).Any())
{
- foreach (KThread thread in _schedulingData.SuggestedThreads(core))
+ foreach (KThread Thread in SchedulingData.SuggestedThreads(Core))
{
- if (thread.CurrentCore < 0)
+ if (Thread.CurrentCore < 0)
{
continue;
}
- KThread firstCandidate = _schedulingData.ScheduledThreads(thread.CurrentCore).FirstOrDefault();
+ KThread FirstCandidate = SchedulingData.ScheduledThreads(Thread.CurrentCore).FirstOrDefault();
- if (firstCandidate == thread)
+ if (FirstCandidate == Thread)
{
continue;
}
- if (firstCandidate == null || firstCandidate.DynamicPriority >= 2)
+ if (FirstCandidate == null || FirstCandidate.DynamicPriority >= 2)
{
- _schedulingData.TransferToCore(thread.DynamicPriority, core, thread);
+ SchedulingData.TransferToCore(Thread.DynamicPriority, Core, Thread);
- selectedThread = thread;
+ SelectedThread = Thread;
}
break;
}
}
- if (selectedThread != this)
+ if (SelectedThread != this)
{
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
System.CriticalSection.Leave();
@@ -457,26 +457,26 @@ namespace Ryujinx.HLE.HOS.Kernel
System.Scheduler.ContextSwitch();
}
- public void SetPriority(int priority)
+ public void SetPriority(int Priority)
{
System.CriticalSection.Enter();
- BasePriority = priority;
+ BasePriority = Priority;
UpdatePriorityInheritance();
System.CriticalSection.Leave();
}
- public long SetActivity(bool pause)
+ public long SetActivity(bool Pause)
{
- long result = 0;
+ long Result = 0;
System.CriticalSection.Enter();
- ThreadSchedState lowNibble = SchedFlags & ThreadSchedState.LowMask;
+ ThreadSchedState LowNibble = SchedFlags & ThreadSchedState.LowMask;
- if (lowNibble != ThreadSchedState.Paused && lowNibble != ThreadSchedState.Running)
+ if (LowNibble != ThreadSchedState.Paused && LowNibble != ThreadSchedState.Running)
{
System.CriticalSection.Leave();
@@ -487,41 +487,41 @@ namespace Ryujinx.HLE.HOS.Kernel
if (!ShallBeTerminated && SchedFlags != ThreadSchedState.TerminationPending)
{
- if (pause)
+ if (Pause)
{
//Pause, the force pause flag should be clear (thread is NOT paused).
- if ((_forcePauseFlags & ThreadSchedState.ThreadPauseFlag) == 0)
+ if ((ForcePauseFlags & ThreadSchedState.ThreadPauseFlag) == 0)
{
- _forcePauseFlags |= ThreadSchedState.ThreadPauseFlag;
+ ForcePauseFlags |= ThreadSchedState.ThreadPauseFlag;
CombineForcePauseFlags();
}
else
{
- result = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
}
else
{
//Unpause, the force pause flag should be set (thread is paused).
- if ((_forcePauseFlags & ThreadSchedState.ThreadPauseFlag) != 0)
+ if ((ForcePauseFlags & ThreadSchedState.ThreadPauseFlag) != 0)
{
- ThreadSchedState oldForcePauseFlags = _forcePauseFlags;
+ ThreadSchedState OldForcePauseFlags = ForcePauseFlags;
- _forcePauseFlags &= ~ThreadSchedState.ThreadPauseFlag;
+ ForcePauseFlags &= ~ThreadSchedState.ThreadPauseFlag;
- if ((oldForcePauseFlags & ~ThreadSchedState.ThreadPauseFlag) == ThreadSchedState.None)
+ if ((OldForcePauseFlags & ~ThreadSchedState.ThreadPauseFlag) == ThreadSchedState.None)
{
- ThreadSchedState oldSchedFlags = SchedFlags;
+ ThreadSchedState OldSchedFlags = SchedFlags;
SchedFlags &= ThreadSchedState.LowMask;
- AdjustScheduling(oldSchedFlags);
+ AdjustScheduling(OldSchedFlags);
}
}
else
{
- result = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
}
}
}
@@ -529,7 +529,7 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
System.CriticalSection.Leave();
- return result;
+ return Result;
}
public void CancelSynchronization()
@@ -563,18 +563,18 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
}
- public KernelResult SetCoreAndAffinityMask(int newCore, long newAffinityMask)
+ public KernelResult SetCoreAndAffinityMask(int NewCore, long NewAffinityMask)
{
System.CriticalSection.Enter();
- bool useOverride = _affinityOverrideCount != 0;
+ bool UseOverride = AffinityOverrideCount != 0;
//The value -3 is "do not change the preferred core".
- if (newCore == -3)
+ if (NewCore == -3)
{
- newCore = useOverride ? _preferredCoreOverride : PreferredCore;
+ NewCore = UseOverride ? PreferredCoreOverride : PreferredCore;
- if ((newAffinityMask & (1 << newCore)) == 0)
+ if ((NewAffinityMask & (1 << NewCore)) == 0)
{
System.CriticalSection.Leave();
@@ -582,21 +582,21 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- if (useOverride)
+ if (UseOverride)
{
- _preferredCoreOverride = newCore;
- _affinityMaskOverride = newAffinityMask;
+ PreferredCoreOverride = NewCore;
+ AffinityMaskOverride = NewAffinityMask;
}
else
{
- long oldAffinityMask = AffinityMask;
+ long OldAffinityMask = AffinityMask;
- PreferredCore = newCore;
- AffinityMask = newAffinityMask;
+ PreferredCore = NewCore;
+ AffinityMask = NewAffinityMask;
- if (oldAffinityMask != newAffinityMask)
+ if (OldAffinityMask != NewAffinityMask)
{
- int oldCore = CurrentCore;
+ int OldCore = CurrentCore;
if (CurrentCore >= 0 && ((AffinityMask >> CurrentCore) & 1) == 0)
{
@@ -610,7 +610,7 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- AdjustSchedulingForNewAffinity(oldAffinityMask, oldCore);
+ AdjustSchedulingForNewAffinity(OldAffinityMask, OldCore);
}
}
@@ -619,13 +619,13 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- private static int HighestSetCore(long mask)
+ private static int HighestSetCore(long Mask)
{
- for (int core = KScheduler.CpuCoresCount - 1; core >= 0; core--)
+ for (int Core = KScheduler.CpuCoresCount - 1; Core >= 0; Core--)
{
- if (((mask >> core) & 1) != 0)
+ if (((Mask >> Core) & 1) != 0)
{
- return core;
+ return Core;
}
}
@@ -634,25 +634,25 @@ namespace Ryujinx.HLE.HOS.Kernel
private void CombineForcePauseFlags()
{
- ThreadSchedState oldFlags = SchedFlags;
- ThreadSchedState lowNibble = SchedFlags & ThreadSchedState.LowMask;
+ ThreadSchedState OldFlags = SchedFlags;
+ ThreadSchedState LowNibble = SchedFlags & ThreadSchedState.LowMask;
- SchedFlags = lowNibble | _forcePauseFlags;
+ SchedFlags = LowNibble | ForcePauseFlags;
- AdjustScheduling(oldFlags);
+ AdjustScheduling(OldFlags);
}
- private void SetNewSchedFlags(ThreadSchedState newFlags)
+ private void SetNewSchedFlags(ThreadSchedState NewFlags)
{
System.CriticalSection.Enter();
- ThreadSchedState oldFlags = SchedFlags;
+ ThreadSchedState OldFlags = SchedFlags;
- SchedFlags = (oldFlags & ThreadSchedState.HighMask) | newFlags;
+ SchedFlags = (OldFlags & ThreadSchedState.HighMask) | NewFlags;
- if ((oldFlags & ThreadSchedState.LowMask) != newFlags)
+ if ((OldFlags & ThreadSchedState.LowMask) != NewFlags)
{
- AdjustScheduling(oldFlags);
+ AdjustScheduling(OldFlags);
}
System.CriticalSection.Leave();
@@ -681,98 +681,98 @@ namespace Ryujinx.HLE.HOS.Kernel
System.CriticalSection.Leave();
}
- public void Reschedule(ThreadSchedState newFlags)
+ public void Reschedule(ThreadSchedState NewFlags)
{
System.CriticalSection.Enter();
- ThreadSchedState oldFlags = SchedFlags;
+ ThreadSchedState OldFlags = SchedFlags;
- SchedFlags = (oldFlags & ThreadSchedState.HighMask) |
- (newFlags & ThreadSchedState.LowMask);
+ SchedFlags = (OldFlags & ThreadSchedState.HighMask) |
+ (NewFlags & ThreadSchedState.LowMask);
- AdjustScheduling(oldFlags);
+ AdjustScheduling(OldFlags);
System.CriticalSection.Leave();
}
- public void AddMutexWaiter(KThread requester)
+ public void AddMutexWaiter(KThread Requester)
{
- AddToMutexWaitersList(requester);
+ AddToMutexWaitersList(Requester);
- requester.MutexOwner = this;
+ Requester.MutexOwner = this;
UpdatePriorityInheritance();
}
- public void RemoveMutexWaiter(KThread thread)
+ public void RemoveMutexWaiter(KThread Thread)
{
- if (thread._mutexWaiterNode?.List != null)
+ if (Thread.MutexWaiterNode?.List != null)
{
- _mutexWaiters.Remove(thread._mutexWaiterNode);
+ MutexWaiters.Remove(Thread.MutexWaiterNode);
}
- thread.MutexOwner = null;
+ Thread.MutexOwner = null;
UpdatePriorityInheritance();
}
- public KThread RelinquishMutex(long mutexAddress, out int count)
+ public KThread RelinquishMutex(long MutexAddress, out int Count)
{
- count = 0;
+ Count = 0;
- if (_mutexWaiters.First == null)
+ if (MutexWaiters.First == null)
{
return null;
}
- KThread newMutexOwner = null;
+ KThread NewMutexOwner = null;
- LinkedListNode<KThread> currentNode = _mutexWaiters.First;
+ LinkedListNode<KThread> CurrentNode = MutexWaiters.First;
do
{
//Skip all threads that are not waiting for this mutex.
- while (currentNode != null && currentNode.Value.MutexAddress != mutexAddress)
+ while (CurrentNode != null && CurrentNode.Value.MutexAddress != MutexAddress)
{
- currentNode = currentNode.Next;
+ CurrentNode = CurrentNode.Next;
}
- if (currentNode == null)
+ if (CurrentNode == null)
{
break;
}
- LinkedListNode<KThread> nextNode = currentNode.Next;
+ LinkedListNode<KThread> NextNode = CurrentNode.Next;
- _mutexWaiters.Remove(currentNode);
+ MutexWaiters.Remove(CurrentNode);
- currentNode.Value.MutexOwner = newMutexOwner;
+ CurrentNode.Value.MutexOwner = NewMutexOwner;
- if (newMutexOwner != null)
+ if (NewMutexOwner != null)
{
//New owner was already selected, re-insert on new owner list.
- newMutexOwner.AddToMutexWaitersList(currentNode.Value);
+ NewMutexOwner.AddToMutexWaitersList(CurrentNode.Value);
}
else
{
//New owner not selected yet, use current thread.
- newMutexOwner = currentNode.Value;
+ NewMutexOwner = CurrentNode.Value;
}
- count++;
+ Count++;
- currentNode = nextNode;
+ CurrentNode = NextNode;
}
- while (currentNode != null);
+ while (CurrentNode != null);
- if (newMutexOwner != null)
+ if (NewMutexOwner != null)
{
UpdatePriorityInheritance();
- newMutexOwner.UpdatePriorityInheritance();
+ NewMutexOwner.UpdatePriorityInheritance();
}
- return newMutexOwner;
+ return NewMutexOwner;
}
private void UpdatePriorityInheritance()
@@ -780,30 +780,30 @@ namespace Ryujinx.HLE.HOS.Kernel
//If any of the threads waiting for the mutex has
//higher priority than the current thread, then
//the current thread inherits that priority.
- int highestPriority = BasePriority;
+ int HighestPriority = BasePriority;
- if (_mutexWaiters.First != null)
+ if (MutexWaiters.First != null)
{
- int waitingDynamicPriority = _mutexWaiters.First.Value.DynamicPriority;
+ int WaitingDynamicPriority = MutexWaiters.First.Value.DynamicPriority;
- if (waitingDynamicPriority < highestPriority)
+ if (WaitingDynamicPriority < HighestPriority)
{
- highestPriority = waitingDynamicPriority;
+ HighestPriority = WaitingDynamicPriority;
}
}
- if (highestPriority != DynamicPriority)
+ if (HighestPriority != DynamicPriority)
{
- int oldPriority = DynamicPriority;
+ int OldPriority = DynamicPriority;
- DynamicPriority = highestPriority;
+ DynamicPriority = HighestPriority;
- AdjustSchedulingForNewPriority(oldPriority);
+ AdjustSchedulingForNewPriority(OldPriority);
if (MutexOwner != null)
{
//Remove and re-insert to ensure proper sorting based on new priority.
- MutexOwner._mutexWaiters.Remove(_mutexWaiterNode);
+ MutexOwner.MutexWaiters.Remove(MutexWaiterNode);
MutexOwner.AddToMutexWaitersList(this);
@@ -812,47 +812,47 @@ namespace Ryujinx.HLE.HOS.Kernel
}
}
- private void AddToMutexWaitersList(KThread thread)
+ private void AddToMutexWaitersList(KThread Thread)
{
- LinkedListNode<KThread> nextPrio = _mutexWaiters.First;
+ LinkedListNode<KThread> NextPrio = MutexWaiters.First;
- int currentPriority = thread.DynamicPriority;
+ int CurrentPriority = Thread.DynamicPriority;
- while (nextPrio != null && nextPrio.Value.DynamicPriority <= currentPriority)
+ while (NextPrio != null && NextPrio.Value.DynamicPriority <= CurrentPriority)
{
- nextPrio = nextPrio.Next;
+ NextPrio = NextPrio.Next;
}
- if (nextPrio != null)
+ if (NextPrio != null)
{
- thread._mutexWaiterNode = _mutexWaiters.AddBefore(nextPrio, thread);
+ Thread.MutexWaiterNode = MutexWaiters.AddBefore(NextPrio, Thread);
}
else
{
- thread._mutexWaiterNode = _mutexWaiters.AddLast(thread);
+ Thread.MutexWaiterNode = MutexWaiters.AddLast(Thread);
}
}
- private void AdjustScheduling(ThreadSchedState oldFlags)
+ private void AdjustScheduling(ThreadSchedState OldFlags)
{
- if (oldFlags == SchedFlags)
+ if (OldFlags == SchedFlags)
{
return;
}
- if (oldFlags == ThreadSchedState.Running)
+ if (OldFlags == ThreadSchedState.Running)
{
//Was running, now it's stopped.
if (CurrentCore >= 0)
{
- _schedulingData.Unschedule(DynamicPriority, CurrentCore, this);
+ SchedulingData.Unschedule(DynamicPriority, CurrentCore, this);
}
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (core != CurrentCore && ((AffinityMask >> core) & 1) != 0)
+ if (Core != CurrentCore && ((AffinityMask >> Core) & 1) != 0)
{
- _schedulingData.Unsuggest(DynamicPriority, core, this);
+ SchedulingData.Unsuggest(DynamicPriority, Core, this);
}
}
}
@@ -861,22 +861,22 @@ namespace Ryujinx.HLE.HOS.Kernel
//Was stopped, now it's running.
if (CurrentCore >= 0)
{
- _schedulingData.Schedule(DynamicPriority, CurrentCore, this);
+ SchedulingData.Schedule(DynamicPriority, CurrentCore, this);
}
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (core != CurrentCore && ((AffinityMask >> core) & 1) != 0)
+ if (Core != CurrentCore && ((AffinityMask >> Core) & 1) != 0)
{
- _schedulingData.Suggest(DynamicPriority, core, this);
+ SchedulingData.Suggest(DynamicPriority, Core, this);
}
}
}
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
- private void AdjustSchedulingForNewPriority(int oldPriority)
+ private void AdjustSchedulingForNewPriority(int OldPriority)
{
if (SchedFlags != ThreadSchedState.Running)
{
@@ -886,44 +886,44 @@ namespace Ryujinx.HLE.HOS.Kernel
//Remove thread from the old priority queues.
if (CurrentCore >= 0)
{
- _schedulingData.Unschedule(oldPriority, CurrentCore, this);
+ SchedulingData.Unschedule(OldPriority, CurrentCore, this);
}
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (core != CurrentCore && ((AffinityMask >> core) & 1) != 0)
+ if (Core != CurrentCore && ((AffinityMask >> Core) & 1) != 0)
{
- _schedulingData.Unsuggest(oldPriority, core, this);
+ SchedulingData.Unsuggest(OldPriority, Core, this);
}
}
//Add thread to the new priority queues.
- KThread currentThread = _scheduler.GetCurrentThread();
+ KThread CurrentThread = Scheduler.GetCurrentThread();
if (CurrentCore >= 0)
{
- if (currentThread == this)
+ if (CurrentThread == this)
{
- _schedulingData.SchedulePrepend(DynamicPriority, CurrentCore, this);
+ SchedulingData.SchedulePrepend(DynamicPriority, CurrentCore, this);
}
else
{
- _schedulingData.Schedule(DynamicPriority, CurrentCore, this);
+ SchedulingData.Schedule(DynamicPriority, CurrentCore, this);
}
}
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (core != CurrentCore && ((AffinityMask >> core) & 1) != 0)
+ if (Core != CurrentCore && ((AffinityMask >> Core) & 1) != 0)
{
- _schedulingData.Suggest(DynamicPriority, core, this);
+ SchedulingData.Suggest(DynamicPriority, Core, this);
}
}
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
- private void AdjustSchedulingForNewAffinity(long oldAffinityMask, int oldCore)
+ private void AdjustSchedulingForNewAffinity(long OldAffinityMask, int OldCore)
{
if (SchedFlags != ThreadSchedState.Running || DynamicPriority >= KScheduler.PrioritiesCount)
{
@@ -931,49 +931,49 @@ namespace Ryujinx.HLE.HOS.Kernel
}
//Remove from old queues.
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (((oldAffinityMask >> core) & 1) != 0)
+ if (((OldAffinityMask >> Core) & 1) != 0)
{
- if (core == oldCore)
+ if (Core == OldCore)
{
- _schedulingData.Unschedule(DynamicPriority, core, this);
+ SchedulingData.Unschedule(DynamicPriority, Core, this);
}
else
{
- _schedulingData.Unsuggest(DynamicPriority, core, this);
+ SchedulingData.Unsuggest(DynamicPriority, Core, this);
}
}
}
//Insert on new queues.
- for (int core = 0; core < KScheduler.CpuCoresCount; core++)
+ for (int Core = 0; Core < KScheduler.CpuCoresCount; Core++)
{
- if (((AffinityMask >> core) & 1) != 0)
+ if (((AffinityMask >> Core) & 1) != 0)
{
- if (core == CurrentCore)
+ if (Core == CurrentCore)
{
- _schedulingData.Schedule(DynamicPriority, core, this);
+ SchedulingData.Schedule(DynamicPriority, Core, this);
}
else
{
- _schedulingData.Suggest(DynamicPriority, core, this);
+ SchedulingData.Suggest(DynamicPriority, Core, this);
}
}
}
- _scheduler.ThreadReselectionRequested = true;
+ Scheduler.ThreadReselectionRequested = true;
}
public override bool IsSignaled()
{
- return _hasExited;
+ return HasExited;
}
- public void SetEntryArguments(long argsPtr, int threadHandle)
+ public void SetEntryArguments(long ArgsPtr, int ThreadHandle)
{
- Context.ThreadState.X0 = (ulong)argsPtr;
- Context.ThreadState.X1 = (ulong)threadHandle;
+ Context.ThreadState.X0 = (ulong)ArgsPtr;
+ Context.ThreadState.X1 = (ulong)ThreadHandle;
}
public void ClearExclusive()
@@ -1004,7 +1004,7 @@ namespace Ryujinx.HLE.HOS.Kernel
{
Owner?.RemoveThread(this);
- if (_tlsAddress != 0 && Owner.FreeThreadLocalStorage(_tlsAddress) != KernelResult.Success)
+ if (TlsAddress != 0 && Owner.FreeThreadLocalStorage(TlsAddress) != KernelResult.Success)
{
throw new InvalidOperationException("Unexpected failure freeing thread local storage.");
}
@@ -1013,13 +1013,13 @@ namespace Ryujinx.HLE.HOS.Kernel
//Wake up all threads that may be waiting for a mutex being held
//by this thread.
- foreach (KThread thread in _mutexWaiters)
+ foreach (KThread Thread in MutexWaiters)
{
- thread.MutexOwner = null;
- thread._preferredCoreOverride = 0;
- thread.ObjSyncResult = 0xfa01;
+ Thread.MutexOwner = null;
+ Thread.PreferredCoreOverride = 0;
+ Thread.ObjSyncResult = 0xfa01;
- thread.ReleaseAndResume();
+ Thread.ReleaseAndResume();
}
System.CriticalSection.Leave();
diff --git a/Ryujinx.HLE/HOS/Kernel/KTimeManager.cs b/Ryujinx.HLE/HOS/Kernel/KTimeManager.cs
index c662906c..375789f0 100644
--- a/Ryujinx.HLE/HOS/Kernel/KTimeManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KTimeManager.cs
@@ -10,116 +10,116 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private class WaitingObject
{
- public IKFutureSchedulerObject Object { get; }
+ public IKFutureSchedulerObject Object { get; private set; }
- public long TimePoint { get; }
+ public long TimePoint { get; private set; }
- public WaitingObject(IKFutureSchedulerObject schedulerObj, long timePoint)
+ public WaitingObject(IKFutureSchedulerObject Object, long TimePoint)
{
- Object = schedulerObj;
- TimePoint = timePoint;
+ this.Object = Object;
+ this.TimePoint = TimePoint;
}
}
- private List<WaitingObject> _waitingObjects;
+ private List<WaitingObject> WaitingObjects;
- private AutoResetEvent _waitEvent;
+ private AutoResetEvent WaitEvent;
- private bool _keepRunning;
+ private bool KeepRunning;
public KTimeManager()
{
- _waitingObjects = new List<WaitingObject>();
+ WaitingObjects = new List<WaitingObject>();
- _keepRunning = true;
+ KeepRunning = true;
- Thread work = new Thread(WaitAndCheckScheduledObjects);
+ Thread Work = new Thread(WaitAndCheckScheduledObjects);
- work.Start();
+ Work.Start();
}
- public void ScheduleFutureInvocation(IKFutureSchedulerObject schedulerObj, long timeout)
+ public void ScheduleFutureInvocation(IKFutureSchedulerObject Object, long Timeout)
{
- long timePoint = PerformanceCounter.ElapsedMilliseconds + ConvertNanosecondsToMilliseconds(timeout);
+ long TimePoint = PerformanceCounter.ElapsedMilliseconds + ConvertNanosecondsToMilliseconds(Timeout);
- lock (_waitingObjects)
+ lock (WaitingObjects)
{
- _waitingObjects.Add(new WaitingObject(schedulerObj, timePoint));
+ WaitingObjects.Add(new WaitingObject(Object, TimePoint));
}
- _waitEvent.Set();
+ WaitEvent.Set();
}
- public static long ConvertNanosecondsToMilliseconds(long time)
+ public static long ConvertNanosecondsToMilliseconds(long Time)
{
- time /= 1000000;
+ Time /= 1000000;
- if ((ulong)time > int.MaxValue)
+ if ((ulong)Time > int.MaxValue)
{
return int.MaxValue;
}
- return time;
+ return Time;
}
- public static long ConvertMillisecondsToNanoseconds(long time)
+ public static long ConvertMillisecondsToNanoseconds(long Time)
{
- return time * 1000000;
+ return Time * 1000000;
}
- public static long ConvertMillisecondsToTicks(long time)
+ public static long ConvertMillisecondsToTicks(long Time)
{
- return time * 19200;
+ return Time * 19200;
}
public void UnscheduleFutureInvocation(IKFutureSchedulerObject Object)
{
- lock (_waitingObjects)
+ lock (WaitingObjects)
{
- _waitingObjects.RemoveAll(x => x.Object == Object);
+ WaitingObjects.RemoveAll(x => x.Object == Object);
}
}
private void WaitAndCheckScheduledObjects()
{
- using (_waitEvent = new AutoResetEvent(false))
+ using (WaitEvent = new AutoResetEvent(false))
{
- while (_keepRunning)
+ while (KeepRunning)
{
- WaitingObject next;
+ WaitingObject Next;
- lock (_waitingObjects)
+ lock (WaitingObjects)
{
- next = _waitingObjects.OrderBy(x => x.TimePoint).FirstOrDefault();
+ Next = WaitingObjects.OrderBy(x => x.TimePoint).FirstOrDefault();
}
- if (next != null)
+ if (Next != null)
{
- long timePoint = PerformanceCounter.ElapsedMilliseconds;
+ long TimePoint = PerformanceCounter.ElapsedMilliseconds;
- if (next.TimePoint > timePoint)
+ if (Next.TimePoint > TimePoint)
{
- _waitEvent.WaitOne((int)(next.TimePoint - timePoint));
+ WaitEvent.WaitOne((int)(Next.TimePoint - TimePoint));
}
- bool timeUp = PerformanceCounter.ElapsedMilliseconds >= next.TimePoint;
+ bool TimeUp = PerformanceCounter.ElapsedMilliseconds >= Next.TimePoint;
- if (timeUp)
+ if (TimeUp)
{
- lock (_waitingObjects)
+ lock (WaitingObjects)
{
- timeUp = _waitingObjects.Remove(next);
+ TimeUp = WaitingObjects.Remove(Next);
}
}
- if (timeUp)
+ if (TimeUp)
{
- next.Object.TimeUp();
+ Next.Object.TimeUp();
}
}
else
{
- _waitEvent.WaitOne();
+ WaitEvent.WaitOne();
}
}
}
@@ -130,13 +130,13 @@ namespace Ryujinx.HLE.HOS.Kernel
Dispose(true);
}
- protected virtual void Dispose(bool disposing)
+ protected virtual void Dispose(bool Disposing)
{
- if (disposing)
+ if (Disposing)
{
- _keepRunning = false;
+ KeepRunning = false;
- _waitEvent?.Set();
+ WaitEvent?.Set();
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/KTlsPageInfo.cs b/Ryujinx.HLE/HOS/Kernel/KTlsPageInfo.cs
index aa0614e6..18dc2dec 100644
--- a/Ryujinx.HLE/HOS/Kernel/KTlsPageInfo.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KTlsPageInfo.cs
@@ -4,70 +4,70 @@ namespace Ryujinx.HLE.HOS.Kernel
{
public const int TlsEntrySize = 0x200;
- public ulong PageAddr { get; }
+ public ulong PageAddr { get; private set; }
- private bool[] _isSlotFree;
+ private bool[] IsSlotFree;
- public KTlsPageInfo(ulong pageAddress)
+ public KTlsPageInfo(ulong PageAddress)
{
- PageAddr = pageAddress;
+ this.PageAddr = PageAddress;
- _isSlotFree = new bool[KMemoryManager.PageSize / TlsEntrySize];
+ IsSlotFree = new bool[KMemoryManager.PageSize / TlsEntrySize];
- for (int index = 0; index < _isSlotFree.Length; index++)
+ for (int Index = 0; Index < IsSlotFree.Length; Index++)
{
- _isSlotFree[index] = true;
+ IsSlotFree[Index] = true;
}
}
- public bool TryGetFreePage(out ulong address)
+ public bool TryGetFreePage(out ulong Address)
{
- address = PageAddr;
+ Address = PageAddr;
- for (int index = 0; index < _isSlotFree.Length; index++)
+ for (int Index = 0; Index < IsSlotFree.Length; Index++)
{
- if (_isSlotFree[index])
+ if (IsSlotFree[Index])
{
- _isSlotFree[index] = false;
+ IsSlotFree[Index] = false;
return true;
}
- address += TlsEntrySize;
+ Address += TlsEntrySize;
}
- address = 0;
+ Address = 0;
return false;
}
public bool IsFull()
{
- bool hasFree = false;
+ bool HasFree = false;
- for (int index = 0; index < _isSlotFree.Length; index++)
+ for (int Index = 0; Index < IsSlotFree.Length; Index++)
{
- hasFree |= _isSlotFree[index];
+ HasFree |= IsSlotFree[Index];
}
- return !hasFree;
+ return !HasFree;
}
public bool IsEmpty()
{
- bool allFree = true;
+ bool AllFree = true;
- for (int index = 0; index < _isSlotFree.Length; index++)
+ for (int Index = 0; Index < IsSlotFree.Length; Index++)
{
- allFree &= _isSlotFree[index];
+ AllFree &= IsSlotFree[Index];
}
- return allFree;
+ return AllFree;
}
- public void FreeTlsSlot(ulong address)
+ public void FreeTlsSlot(ulong Address)
{
- _isSlotFree[(address - PageAddr) / TlsEntrySize] = true;
+ IsSlotFree[(Address - PageAddr) / TlsEntrySize] = true;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KTlsPageManager.cs b/Ryujinx.HLE/HOS/Kernel/KTlsPageManager.cs
index 75f595eb..1fb2ce6a 100644
--- a/Ryujinx.HLE/HOS/Kernel/KTlsPageManager.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KTlsPageManager.cs
@@ -6,55 +6,55 @@ namespace Ryujinx.HLE.HOS.Kernel
{
private const int TlsEntrySize = 0x200;
- private long _pagePosition;
+ private long PagePosition;
- private int _usedSlots;
+ private int UsedSlots;
- private bool[] _slots;
+ private bool[] Slots;
- public bool IsEmpty => _usedSlots == 0;
- public bool IsFull => _usedSlots == _slots.Length;
+ public bool IsEmpty => UsedSlots == 0;
+ public bool IsFull => UsedSlots == Slots.Length;
- public KTlsPageManager(long pagePosition)
+ public KTlsPageManager(long PagePosition)
{
- _pagePosition = pagePosition;
+ this.PagePosition = PagePosition;
- _slots = new bool[KMemoryManager.PageSize / TlsEntrySize];
+ Slots = new bool[KMemoryManager.PageSize / TlsEntrySize];
}
- public bool TryGetFreeTlsAddr(out long position)
+ public bool TryGetFreeTlsAddr(out long Position)
{
- position = _pagePosition;
+ Position = PagePosition;
- for (int index = 0; index < _slots.Length; index++)
+ for (int Index = 0; Index < Slots.Length; Index++)
{
- if (!_slots[index])
+ if (!Slots[Index])
{
- _slots[index] = true;
+ Slots[Index] = true;
- _usedSlots++;
+ UsedSlots++;
return true;
}
- position += TlsEntrySize;
+ Position += TlsEntrySize;
}
- position = 0;
+ Position = 0;
return false;
}
- public void FreeTlsSlot(int slot)
+ public void FreeTlsSlot(int Slot)
{
- if ((uint)slot > _slots.Length)
+ if ((uint)Slot > Slots.Length)
{
- throw new ArgumentOutOfRangeException(nameof(slot));
+ throw new ArgumentOutOfRangeException(nameof(Slot));
}
- _slots[slot] = false;
+ Slots[Slot] = false;
- _usedSlots--;
+ UsedSlots--;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KTransferMemory.cs b/Ryujinx.HLE/HOS/Kernel/KTransferMemory.cs
index 7bdc66e3..5598f78d 100644
--- a/Ryujinx.HLE/HOS/Kernel/KTransferMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KTransferMemory.cs
@@ -2,13 +2,13 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KTransferMemory
{
- public ulong Address { get; }
- public ulong Size { get; }
+ public ulong Address { get; private set; }
+ public ulong Size { get; private set; }
- public KTransferMemory(ulong address, ulong size)
+ public KTransferMemory(ulong Address, ulong Size)
{
- Address = address;
- Size = size;
+ this.Address = Address;
+ this.Size = Size;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KWritableEvent.cs b/Ryujinx.HLE/HOS/Kernel/KWritableEvent.cs
index 4d56a92d..1721ed00 100644
--- a/Ryujinx.HLE/HOS/Kernel/KWritableEvent.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KWritableEvent.cs
@@ -2,21 +2,21 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class KWritableEvent
{
- private KEvent _parent;
+ private KEvent Parent;
- public KWritableEvent(KEvent parent)
+ public KWritableEvent(KEvent Parent)
{
- _parent = parent;
+ this.Parent = Parent;
}
public void Signal()
{
- _parent.ReadableEvent.Signal();
+ Parent.ReadableEvent.Signal();
}
public KernelResult Clear()
{
- return _parent.ReadableEvent.Clear();
+ return Parent.ReadableEvent.Clear();
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/KernelInit.cs b/Ryujinx.HLE/HOS/Kernel/KernelInit.cs
index a797951b..efb514c1 100644
--- a/Ryujinx.HLE/HOS/Kernel/KernelInit.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KernelInit.cs
@@ -4,28 +4,28 @@ namespace Ryujinx.HLE.HOS.Kernel
{
static class KernelInit
{
- public static void InitializeResourceLimit(KResourceLimit resourceLimit)
+ public static void InitializeResourceLimit(KResourceLimit ResourceLimit)
{
- void EnsureSuccess(KernelResult result)
+ void EnsureSuccess(KernelResult Result)
{
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- throw new InvalidOperationException($"Unexpected result \"{result}\".");
+ throw new InvalidOperationException($"Unexpected result \"{Result}\".");
}
}
- int kernelMemoryCfg = 0;
+ int KernelMemoryCfg = 0;
- long ramSize = GetRamSize(kernelMemoryCfg);
+ long RamSize = GetRamSize(KernelMemoryCfg);
- EnsureSuccess(resourceLimit.SetLimitValue(LimitableResource.Memory, ramSize));
- EnsureSuccess(resourceLimit.SetLimitValue(LimitableResource.Thread, 800));
- EnsureSuccess(resourceLimit.SetLimitValue(LimitableResource.Event, 700));
- EnsureSuccess(resourceLimit.SetLimitValue(LimitableResource.TransferMemory, 200));
- EnsureSuccess(resourceLimit.SetLimitValue(LimitableResource.Session, 900));
+ EnsureSuccess(ResourceLimit.SetLimitValue(LimitableResource.Memory, RamSize));
+ EnsureSuccess(ResourceLimit.SetLimitValue(LimitableResource.Thread, 800));
+ EnsureSuccess(ResourceLimit.SetLimitValue(LimitableResource.Event, 700));
+ EnsureSuccess(ResourceLimit.SetLimitValue(LimitableResource.TransferMemory, 200));
+ EnsureSuccess(ResourceLimit.SetLimitValue(LimitableResource.Session, 900));
- if (!resourceLimit.Reserve(LimitableResource.Memory, 0) ||
- !resourceLimit.Reserve(LimitableResource.Memory, 0x60000))
+ if (!ResourceLimit.Reserve(LimitableResource.Memory, 0) ||
+ !ResourceLimit.Reserve(LimitableResource.Memory, 0x60000))
{
throw new InvalidOperationException("Unexpected failure reserving memory on resource limit.");
}
@@ -33,99 +33,99 @@ namespace Ryujinx.HLE.HOS.Kernel
public static KMemoryRegionManager[] GetMemoryRegions()
{
- KMemoryArrange arrange = GetMemoryArrange();
+ KMemoryArrange Arrange = GetMemoryArrange();
return new KMemoryRegionManager[]
{
- GetMemoryRegion(arrange.Application),
- GetMemoryRegion(arrange.Applet),
- GetMemoryRegion(arrange.Service),
- GetMemoryRegion(arrange.NvServices)
+ GetMemoryRegion(Arrange.Application),
+ GetMemoryRegion(Arrange.Applet),
+ GetMemoryRegion(Arrange.Service),
+ GetMemoryRegion(Arrange.NvServices)
};
}
- private static KMemoryRegionManager GetMemoryRegion(KMemoryArrangeRegion region)
+ private static KMemoryRegionManager GetMemoryRegion(KMemoryArrangeRegion Region)
{
- return new KMemoryRegionManager(region.Address, region.Size, region.EndAddr);
+ return new KMemoryRegionManager(Region.Address, Region.Size, Region.EndAddr);
}
private static KMemoryArrange GetMemoryArrange()
{
- int mcEmemCfg = 0x1000;
+ int McEmemCfg = 0x1000;
- ulong ememApertureSize = (ulong)(mcEmemCfg & 0x3fff) << 20;
+ ulong EmemApertureSize = (ulong)(McEmemCfg & 0x3fff) << 20;
- int kernelMemoryCfg = 0;
+ int KernelMemoryCfg = 0;
- ulong ramSize = (ulong)GetRamSize(kernelMemoryCfg);
+ ulong RamSize = (ulong)GetRamSize(KernelMemoryCfg);
- ulong ramPart0;
- ulong ramPart1;
+ ulong RamPart0;
+ ulong RamPart1;
- if (ramSize * 2 > ememApertureSize)
+ if (RamSize * 2 > EmemApertureSize)
{
- ramPart0 = ememApertureSize / 2;
- ramPart1 = ememApertureSize / 2;
+ RamPart0 = EmemApertureSize / 2;
+ RamPart1 = EmemApertureSize / 2;
}
else
{
- ramPart0 = ememApertureSize;
- ramPart1 = 0;
+ RamPart0 = EmemApertureSize;
+ RamPart1 = 0;
}
- int memoryArrange = 1;
+ int MemoryArrange = 1;
- ulong applicationRgSize;
+ ulong ApplicationRgSize;
- switch (memoryArrange)
+ switch (MemoryArrange)
{
- case 2: applicationRgSize = 0x80000000; break;
+ case 2: ApplicationRgSize = 0x80000000; break;
case 0x11:
- case 0x21: applicationRgSize = 0x133400000; break;
- default: applicationRgSize = 0xcd500000; break;
+ case 0x21: ApplicationRgSize = 0x133400000; break;
+ default: ApplicationRgSize = 0xcd500000; break;
}
- ulong appletRgSize;
+ ulong AppletRgSize;
- switch (memoryArrange)
+ switch (MemoryArrange)
{
- case 2: appletRgSize = 0x61200000; break;
- case 3: appletRgSize = 0x1c000000; break;
- case 0x11: appletRgSize = 0x23200000; break;
+ case 2: AppletRgSize = 0x61200000; break;
+ case 3: AppletRgSize = 0x1c000000; break;
+ case 0x11: AppletRgSize = 0x23200000; break;
case 0x12:
- case 0x21: appletRgSize = 0x89100000; break;
- default: appletRgSize = 0x1fb00000; break;
+ case 0x21: AppletRgSize = 0x89100000; break;
+ default: AppletRgSize = 0x1fb00000; break;
}
- KMemoryArrangeRegion serviceRg;
- KMemoryArrangeRegion nvServicesRg;
- KMemoryArrangeRegion appletRg;
- KMemoryArrangeRegion applicationRg;
+ KMemoryArrangeRegion ServiceRg;
+ KMemoryArrangeRegion NvServicesRg;
+ KMemoryArrangeRegion AppletRg;
+ KMemoryArrangeRegion ApplicationRg;
- const ulong nvServicesRgSize = 0x29ba000;
+ const ulong NvServicesRgSize = 0x29ba000;
- ulong applicationRgEnd = DramMemoryMap.DramEnd; //- RamPart0;
+ ulong ApplicationRgEnd = DramMemoryMap.DramEnd; //- RamPart0;
- applicationRg = new KMemoryArrangeRegion(applicationRgEnd - applicationRgSize, applicationRgSize);
+ ApplicationRg = new KMemoryArrangeRegion(ApplicationRgEnd - ApplicationRgSize, ApplicationRgSize);
- ulong nvServicesRgEnd = applicationRg.Address - appletRgSize;
+ ulong NvServicesRgEnd = ApplicationRg.Address - AppletRgSize;
- nvServicesRg = new KMemoryArrangeRegion(nvServicesRgEnd - nvServicesRgSize, nvServicesRgSize);
- appletRg = new KMemoryArrangeRegion(nvServicesRgEnd, appletRgSize);
+ NvServicesRg = new KMemoryArrangeRegion(NvServicesRgEnd - NvServicesRgSize, NvServicesRgSize);
+ AppletRg = new KMemoryArrangeRegion(NvServicesRgEnd, AppletRgSize);
//Note: There is an extra region used by the kernel, however
//since we are doing HLE we are not going to use that memory, so give all
//the remaining memory space to services.
- ulong serviceRgSize = nvServicesRg.Address - DramMemoryMap.SlabHeapEnd;
+ ulong ServiceRgSize = NvServicesRg.Address - DramMemoryMap.SlabHeapEnd;
- serviceRg = new KMemoryArrangeRegion(DramMemoryMap.SlabHeapEnd, serviceRgSize);
+ ServiceRg = new KMemoryArrangeRegion(DramMemoryMap.SlabHeapEnd, ServiceRgSize);
- return new KMemoryArrange(serviceRg, nvServicesRg, appletRg, applicationRg);
+ return new KMemoryArrange(ServiceRg, NvServicesRg, AppletRg, ApplicationRg);
}
- private static long GetRamSize(int kernelMemoryCfg)
+ private static long GetRamSize(int KernelMemoryCfg)
{
- switch ((kernelMemoryCfg >> 16) & 3)
+ switch ((KernelMemoryCfg >> 16) & 3)
{
case 1: return 0x180000000;
case 2: return 0x200000000;
diff --git a/Ryujinx.HLE/HOS/Kernel/KernelTransfer.cs b/Ryujinx.HLE/HOS/Kernel/KernelTransfer.cs
index c0ce72c0..a3fabeae 100644
--- a/Ryujinx.HLE/HOS/Kernel/KernelTransfer.cs
+++ b/Ryujinx.HLE/HOS/Kernel/KernelTransfer.cs
@@ -4,48 +4,48 @@ namespace Ryujinx.HLE.HOS.Kernel
{
static class KernelTransfer
{
- public static bool UserToKernelInt32(Horizon system, long address, out int value)
+ public static bool UserToKernelInt32(Horizon System, long Address, out int Value)
{
- KProcess currentProcess = system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.CpuMemory.IsMapped(address) &&
- currentProcess.CpuMemory.IsMapped(address + 3))
+ if (CurrentProcess.CpuMemory.IsMapped(Address) &&
+ CurrentProcess.CpuMemory.IsMapped(Address + 3))
{
- value = currentProcess.CpuMemory.ReadInt32(address);
+ Value = CurrentProcess.CpuMemory.ReadInt32(Address);
return true;
}
- value = 0;
+ Value = 0;
return false;
}
- public static bool UserToKernelString(Horizon system, long address, int size, out string value)
+ public static bool UserToKernelString(Horizon System, long Address, int Size, out string Value)
{
- KProcess currentProcess = system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.CpuMemory.IsMapped(address) &&
- currentProcess.CpuMemory.IsMapped(address + size - 1))
+ if (CurrentProcess.CpuMemory.IsMapped(Address) &&
+ CurrentProcess.CpuMemory.IsMapped(Address + Size - 1))
{
- value = MemoryHelper.ReadAsciiString(currentProcess.CpuMemory, address, size);
+ Value = MemoryHelper.ReadAsciiString(CurrentProcess.CpuMemory, Address, Size);
return true;
}
- value = null;
+ Value = null;
return false;
}
- public static bool KernelToUserInt32(Horizon system, long address, int value)
+ public static bool KernelToUserInt32(Horizon System, long Address, int Value)
{
- KProcess currentProcess = system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.CpuMemory.IsMapped(address) &&
- currentProcess.CpuMemory.IsMapped(address + 3))
+ if (CurrentProcess.CpuMemory.IsMapped(Address) &&
+ CurrentProcess.CpuMemory.IsMapped(Address + 3))
{
- currentProcess.CpuMemory.WriteInt32ToSharedAddr(address, value);
+ CurrentProcess.CpuMemory.WriteInt32ToSharedAddr(Address, Value);
return true;
}
@@ -53,14 +53,14 @@ namespace Ryujinx.HLE.HOS.Kernel
return false;
}
- public static bool KernelToUserInt64(Horizon system, long address, long value)
+ public static bool KernelToUserInt64(Horizon System, long Address, long Value)
{
- KProcess currentProcess = system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.CpuMemory.IsMapped(address) &&
- currentProcess.CpuMemory.IsMapped(address + 7))
+ if (CurrentProcess.CpuMemory.IsMapped(Address) &&
+ CurrentProcess.CpuMemory.IsMapped(Address + 7))
{
- currentProcess.CpuMemory.WriteInt64(address, value);
+ CurrentProcess.CpuMemory.WriteInt64(Address, Value);
return true;
}
diff --git a/Ryujinx.HLE/HOS/Kernel/MersenneTwister.cs b/Ryujinx.HLE/HOS/Kernel/MersenneTwister.cs
index 5307bdc9..b90d54d2 100644
--- a/Ryujinx.HLE/HOS/Kernel/MersenneTwister.cs
+++ b/Ryujinx.HLE/HOS/Kernel/MersenneTwister.cs
@@ -4,125 +4,125 @@ namespace Ryujinx.HLE.HOS.Kernel
{
class MersenneTwister
{
- private int _index;
- private uint[] _mt;
+ private int Index;
+ private uint[] Mt;
- public MersenneTwister(uint seed)
+ public MersenneTwister(uint Seed)
{
- _mt = new uint[624];
+ Mt = new uint[624];
- _mt[0] = seed;
+ Mt[0] = Seed;
- for (int mtIdx = 1; mtIdx < _mt.Length; mtIdx++)
+ for (int MtIdx = 1; MtIdx < Mt.Length; MtIdx++)
{
- uint prev = _mt[mtIdx - 1];
+ uint Prev = Mt[MtIdx - 1];
- _mt[mtIdx] = (uint)(0x6c078965 * (prev ^ (prev >> 30)) + mtIdx);
+ Mt[MtIdx] = (uint)(0x6c078965 * (Prev ^ (Prev >> 30)) + MtIdx);
}
- _index = _mt.Length;
+ Index = Mt.Length;
}
- public long GenRandomNumber(long min, long max)
+ public long GenRandomNumber(long Min, long Max)
{
- long range = max - min;
+ long Range = Max - Min;
- if (min == max)
+ if (Min == Max)
{
- return min;
+ return Min;
}
- if (range == -1)
+ if (Range == -1)
{
//Increment would cause a overflow, special case.
return GenRandomNumber(2, 2, 32, 0xffffffffu, 0xffffffffu);
}
- range++;
+ Range++;
//This is log2(Range) plus one.
- int nextRangeLog2 = 64 - BitUtils.CountLeadingZeros64(range);
+ int NextRangeLog2 = 64 - BitUtils.CountLeadingZeros64(Range);
//If Range is already power of 2, subtract one to use log2(Range) directly.
- int rangeLog2 = nextRangeLog2 - (BitUtils.IsPowerOfTwo64(range) ? 1 : 0);
+ int RangeLog2 = NextRangeLog2 - (BitUtils.IsPowerOfTwo64(Range) ? 1 : 0);
- int parts = rangeLog2 > 32 ? 2 : 1;
- int bitsPerPart = rangeLog2 / parts;
+ int Parts = RangeLog2 > 32 ? 2 : 1;
+ int BitsPerPart = RangeLog2 / Parts;
- int fullParts = parts - (rangeLog2 - parts * bitsPerPart);
+ int FullParts = Parts - (RangeLog2 - Parts * BitsPerPart);
- uint mask = 0xffffffffu >> (32 - bitsPerPart);
- uint maskPlus1 = 0xffffffffu >> (31 - bitsPerPart);
+ uint Mask = 0xffffffffu >> (32 - BitsPerPart);
+ uint MaskPlus1 = 0xffffffffu >> (31 - BitsPerPart);
- long randomNumber;
+ long RandomNumber;
do
{
- randomNumber = GenRandomNumber(parts, fullParts, bitsPerPart, mask, maskPlus1);
+ RandomNumber = GenRandomNumber(Parts, FullParts, BitsPerPart, Mask, MaskPlus1);
}
- while ((ulong)randomNumber >= (ulong)range);
+ while ((ulong)RandomNumber >= (ulong)Range);
- return min + randomNumber;
+ return Min + RandomNumber;
}
private long GenRandomNumber(
- int parts,
- int fullParts,
- int bitsPerPart,
- uint mask,
- uint maskPlus1)
+ int Parts,
+ int FullParts,
+ int BitsPerPart,
+ uint Mask,
+ uint MaskPlus1)
{
- long randomNumber = 0;
+ long RandomNumber = 0;
- int part = 0;
+ int Part = 0;
- for (; part < fullParts; part++)
+ for (; Part < FullParts; Part++)
{
- randomNumber <<= bitsPerPart;
- randomNumber |= GenRandomNumber() & mask;
+ RandomNumber <<= BitsPerPart;
+ RandomNumber |= GenRandomNumber() & Mask;
}
- for (; part < parts; part++)
+ for (; Part < Parts; Part++)
{
- randomNumber <<= bitsPerPart + 1;
- randomNumber |= GenRandomNumber() & maskPlus1;
+ RandomNumber <<= BitsPerPart + 1;
+ RandomNumber |= GenRandomNumber() & MaskPlus1;
}
- return randomNumber;
+ return RandomNumber;
}
private uint GenRandomNumber()
{
- if (_index >= _mt.Length)
+ if (Index >= Mt.Length)
{
Twist();
}
- uint value = _mt[_index++];
+ uint Value = Mt[Index++];
- value ^= value >> 11;
- value ^= (value << 7) & 0x9d2c5680;
- value ^= (value << 15) & 0xefc60000;
- value ^= value >> 18;
+ Value ^= Value >> 11;
+ Value ^= (Value << 7) & 0x9d2c5680;
+ Value ^= (Value << 15) & 0xefc60000;
+ Value ^= Value >> 18;
- return value;
+ return Value;
}
private void Twist()
{
- for (int mtIdx = 0; mtIdx < _mt.Length; mtIdx++)
+ for (int MtIdx = 0; MtIdx < Mt.Length; MtIdx++)
{
- uint value = (_mt[mtIdx] & 0x80000000) + (_mt[(mtIdx + 1) % _mt.Length] & 0x7fffffff);
+ uint Value = (Mt[MtIdx] & 0x80000000) + (Mt[(MtIdx + 1) % Mt.Length] & 0x7fffffff);
- _mt[mtIdx] = _mt[(mtIdx + 397) % _mt.Length] ^ (value >> 1);
+ Mt[MtIdx] = Mt[(MtIdx + 397) % Mt.Length] ^ (Value >> 1);
- if ((value & 1) != 0)
+ if ((Value & 1) != 0)
{
- _mt[mtIdx] ^= 0x9908b0df;
+ Mt[MtIdx] ^= 0x9908b0df;
}
}
- _index = 0;
+ Index = 0;
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/ProcessCreationInfo.cs b/Ryujinx.HLE/HOS/Kernel/ProcessCreationInfo.cs
index 37f33f28..dae1345a 100644
--- a/Ryujinx.HLE/HOS/Kernel/ProcessCreationInfo.cs
+++ b/Ryujinx.HLE/HOS/Kernel/ProcessCreationInfo.cs
@@ -2,36 +2,36 @@ namespace Ryujinx.HLE.HOS.Kernel
{
struct ProcessCreationInfo
{
- public string Name { get; }
+ public string Name { get; private set; }
- public int Category { get; }
- public long TitleId { get; }
+ public int Category { get; private set; }
+ public long TitleId { get; private set; }
- public ulong CodeAddress { get; }
- public int CodePagesCount { get; }
+ public ulong CodeAddress { get; private set; }
+ public int CodePagesCount { get; private set; }
- public int MmuFlags { get; }
- public int ResourceLimitHandle { get; }
- public int PersonalMmHeapPagesCount { get; }
+ public int MmuFlags { get; private set; }
+ public int ResourceLimitHandle { get; private set; }
+ public int PersonalMmHeapPagesCount { get; private set; }
public ProcessCreationInfo(
- string name,
- int category,
- long titleId,
- ulong codeAddress,
- int codePagesCount,
- int mmuFlags,
- int resourceLimitHandle,
- int personalMmHeapPagesCount)
+ string Name,
+ int Category,
+ long TitleId,
+ ulong CodeAddress,
+ int CodePagesCount,
+ int MmuFlags,
+ int ResourceLimitHandle,
+ int PersonalMmHeapPagesCount)
{
- Name = name;
- Category = category;
- TitleId = titleId;
- CodeAddress = codeAddress;
- CodePagesCount = codePagesCount;
- MmuFlags = mmuFlags;
- ResourceLimitHandle = resourceLimitHandle;
- PersonalMmHeapPagesCount = personalMmHeapPagesCount;
+ this.Name = Name;
+ this.Category = Category;
+ this.TitleId = TitleId;
+ this.CodeAddress = CodeAddress;
+ this.CodePagesCount = CodePagesCount;
+ this.MmuFlags = MmuFlags;
+ this.ResourceLimitHandle = ResourceLimitHandle;
+ this.PersonalMmHeapPagesCount = PersonalMmHeapPagesCount;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/SvcHandler.cs b/Ryujinx.HLE/HOS/Kernel/SvcHandler.cs
index 61408780..cbc5e31c 100644
--- a/Ryujinx.HLE/HOS/Kernel/SvcHandler.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SvcHandler.cs
@@ -10,38 +10,38 @@ namespace Ryujinx.HLE.HOS.Kernel
{
partial class SvcHandler
{
- private delegate void SvcFunc(CpuThreadState threadState);
+ private delegate void SvcFunc(CpuThreadState ThreadState);
- private Dictionary<int, SvcFunc> _svcFuncs;
+ private Dictionary<int, SvcFunc> SvcFuncs;
- private Switch _device;
- private KProcess _process;
- private Horizon _system;
- private MemoryManager _memory;
+ private Switch Device;
+ private KProcess Process;
+ private Horizon System;
+ private MemoryManager Memory;
private struct HleIpcMessage
{
- public KThread Thread { get; }
- public KSession Session { get; }
- public IpcMessage Message { get; }
- public long MessagePtr { get; }
+ public KThread Thread { get; private set; }
+ public KSession Session { get; private set; }
+ public IpcMessage Message { get; private set; }
+ public long MessagePtr { get; private set; }
public HleIpcMessage(
- KThread thread,
- KSession session,
- IpcMessage message,
- long messagePtr)
+ KThread Thread,
+ KSession Session,
+ IpcMessage Message,
+ long MessagePtr)
{
- Thread = thread;
- Session = session;
- Message = message;
- MessagePtr = messagePtr;
+ this.Thread = Thread;
+ this.Session = Session;
+ this.Message = Message;
+ this.MessagePtr = MessagePtr;
}
}
- public SvcHandler(Switch device, KProcess process)
+ public SvcHandler(Switch Device, KProcess Process)
{
- _svcFuncs = new Dictionary<int, SvcFunc>
+ SvcFuncs = new Dictionary<int, SvcFunc>()
{
{ 0x01, SvcSetHeapSize },
{ 0x03, SvcSetMemoryAttribute },
@@ -93,23 +93,23 @@ namespace Ryujinx.HLE.HOS.Kernel
{ 0x71, ManageNamedPort64 }
};
- _device = device;
- _process = process;
- _system = device.System;
- _memory = process.CpuMemory;
+ this.Device = Device;
+ this.Process = Process;
+ this.System = Device.System;
+ this.Memory = Process.CpuMemory;
}
public void SvcCall(object sender, InstExceptionEventArgs e)
{
- CpuThreadState threadState = (CpuThreadState)sender;
+ CpuThreadState ThreadState = (CpuThreadState)sender;
- if (_svcFuncs.TryGetValue(e.Id, out SvcFunc func))
+ if (SvcFuncs.TryGetValue(e.Id, out SvcFunc Func))
{
- Logger.PrintDebug(LogClass.KernelSvc, $"{func.Method.Name} called.");
+ Logger.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} called.");
- func(threadState);
+ Func(ThreadState);
- Logger.PrintDebug(LogClass.KernelSvc, $"{func.Method.Name} ended.");
+ Logger.PrintDebug(LogClass.KernelSvc, $"{Func.Method.Name} ended.");
}
else
{
diff --git a/Ryujinx.HLE/HOS/Kernel/SvcMemory.cs b/Ryujinx.HLE/HOS/Kernel/SvcMemory.cs
index c99c1e98..b5845f0b 100644
--- a/Ryujinx.HLE/HOS/Kernel/SvcMemory.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SvcMemory.cs
@@ -7,575 +7,575 @@ namespace Ryujinx.HLE.HOS.Kernel
{
partial class SvcHandler
{
- private void SvcSetHeapSize(CpuThreadState threadState)
+ private void SvcSetHeapSize(CpuThreadState ThreadState)
{
- ulong size = threadState.X1;
+ ulong Size = ThreadState.X1;
- if ((size & 0xfffffffe001fffff) != 0)
+ if ((Size & 0xfffffffe001fffff) != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Heap size 0x{size:x16} is not aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Heap size 0x{Size:x16} is not aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- KernelResult result = _process.MemoryManager.SetHeapSize(size, out ulong position);
+ KernelResult Result = Process.MemoryManager.SetHeapSize(Size, out ulong Position);
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- threadState.X1 = position;
+ ThreadState.X1 = Position;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
}
- private void SvcSetMemoryAttribute(CpuThreadState threadState)
+ private void SvcSetMemoryAttribute(CpuThreadState ThreadState)
{
- ulong position = threadState.X0;
- ulong size = threadState.X1;
+ ulong Position = ThreadState.X0;
+ ulong Size = ThreadState.X1;
- if (!PageAligned(position))
+ if (!PageAligned(Position))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{position:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Position:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- MemoryAttribute attributeMask = (MemoryAttribute)threadState.X2;
- MemoryAttribute attributeValue = (MemoryAttribute)threadState.X3;
+ MemoryAttribute AttributeMask = (MemoryAttribute)ThreadState.X2;
+ MemoryAttribute AttributeValue = (MemoryAttribute)ThreadState.X3;
- MemoryAttribute attributes = attributeMask | attributeValue;
+ MemoryAttribute Attributes = AttributeMask | AttributeValue;
- if (attributes != attributeMask ||
- (attributes | MemoryAttribute.Uncached) != MemoryAttribute.Uncached)
+ if (Attributes != AttributeMask ||
+ (Attributes | MemoryAttribute.Uncached) != MemoryAttribute.Uncached)
{
Logger.PrintWarning(LogClass.KernelSvc, "Invalid memory attributes!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMaskValue);
return;
}
- KernelResult result = _process.MemoryManager.SetMemoryAttribute(
- position,
- size,
- attributeMask,
- attributeValue);
+ KernelResult Result = Process.MemoryManager.SetMemoryAttribute(
+ Position,
+ Size,
+ AttributeMask,
+ AttributeValue);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
else
{
- _memory.StopObservingRegion((long)position, (long)size);
+ Memory.StopObservingRegion((long)Position, (long)Size);
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcMapMemory(CpuThreadState threadState)
+ private void SvcMapMemory(CpuThreadState ThreadState)
{
- ulong dst = threadState.X0;
- ulong src = threadState.X1;
- ulong size = threadState.X2;
+ ulong Dst = ThreadState.X0;
+ ulong Src = ThreadState.X1;
+ ulong Size = ThreadState.X2;
- if (!PageAligned(src | dst))
+ if (!PageAligned(Src | Dst))
{
Logger.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (src + size <= src || dst + size <= dst)
+ if (Src + Size <= Src || Dst + Size <= Dst)
{
Logger.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (!currentProcess.MemoryManager.InsideAddrSpace(src, size))
+ if (!CurrentProcess.MemoryManager.InsideAddrSpace(Src, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{src:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (currentProcess.MemoryManager.OutsideStackRegion(dst, size) ||
- currentProcess.MemoryManager.InsideHeapRegion (dst, size) ||
- currentProcess.MemoryManager.InsideAliasRegion (dst, size))
+ if (CurrentProcess.MemoryManager.OutsideStackRegion(Dst, Size) ||
+ CurrentProcess.MemoryManager.InsideHeapRegion (Dst, Size) ||
+ CurrentProcess.MemoryManager.InsideAliasRegion (Dst, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{dst:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
return;
}
- KernelResult result = _process.MemoryManager.Map(dst, src, size);
+ KernelResult Result = Process.MemoryManager.Map(Dst, Src, Size);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcUnmapMemory(CpuThreadState threadState)
+ private void SvcUnmapMemory(CpuThreadState ThreadState)
{
- ulong dst = threadState.X0;
- ulong src = threadState.X1;
- ulong size = threadState.X2;
+ ulong Dst = ThreadState.X0;
+ ulong Src = ThreadState.X1;
+ ulong Size = ThreadState.X2;
- if (!PageAligned(src | dst))
+ if (!PageAligned(Src | Dst))
{
Logger.PrintWarning(LogClass.KernelSvc, "Addresses are not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (src + size <= src || dst + size <= dst)
+ if (Src + Size <= Src || Dst + Size <= Dst)
{
Logger.PrintWarning(LogClass.KernelSvc, "Addresses outside of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (!currentProcess.MemoryManager.InsideAddrSpace(src, size))
+ if (!CurrentProcess.MemoryManager.InsideAddrSpace(Src, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{src:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Src address 0x{Src:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (currentProcess.MemoryManager.OutsideStackRegion(dst, size) ||
- currentProcess.MemoryManager.InsideHeapRegion (dst, size) ||
- currentProcess.MemoryManager.InsideAliasRegion (dst, size))
+ if (CurrentProcess.MemoryManager.OutsideStackRegion(Dst, Size) ||
+ CurrentProcess.MemoryManager.InsideHeapRegion (Dst, Size) ||
+ CurrentProcess.MemoryManager.InsideAliasRegion (Dst, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{dst:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Dst address 0x{Dst:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidMemRange);
return;
}
- KernelResult result = _process.MemoryManager.Unmap(dst, src, size);
+ KernelResult Result = Process.MemoryManager.Unmap(Dst, Src, Size);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcQueryMemory(CpuThreadState threadState)
+ private void SvcQueryMemory(CpuThreadState ThreadState)
{
- long infoPtr = (long)threadState.X0;
- ulong position = threadState.X2;
-
- KMemoryInfo blkInfo = _process.MemoryManager.QueryMemory(position);
-
- _memory.WriteUInt64(infoPtr + 0x00, blkInfo.Address);
- _memory.WriteUInt64(infoPtr + 0x08, blkInfo.Size);
- _memory.WriteInt32 (infoPtr + 0x10, (int)blkInfo.State & 0xff);
- _memory.WriteInt32 (infoPtr + 0x14, (int)blkInfo.Attribute);
- _memory.WriteInt32 (infoPtr + 0x18, (int)blkInfo.Permission);
- _memory.WriteInt32 (infoPtr + 0x1c, blkInfo.IpcRefCount);
- _memory.WriteInt32 (infoPtr + 0x20, blkInfo.DeviceRefCount);
- _memory.WriteInt32 (infoPtr + 0x24, 0);
-
- threadState.X0 = 0;
- threadState.X1 = 0;
+ long InfoPtr = (long)ThreadState.X0;
+ ulong Position = ThreadState.X2;
+
+ KMemoryInfo BlkInfo = Process.MemoryManager.QueryMemory(Position);
+
+ Memory.WriteUInt64(InfoPtr + 0x00, BlkInfo.Address);
+ Memory.WriteUInt64(InfoPtr + 0x08, BlkInfo.Size);
+ Memory.WriteInt32 (InfoPtr + 0x10, (int)BlkInfo.State & 0xff);
+ Memory.WriteInt32 (InfoPtr + 0x14, (int)BlkInfo.Attribute);
+ Memory.WriteInt32 (InfoPtr + 0x18, (int)BlkInfo.Permission);
+ Memory.WriteInt32 (InfoPtr + 0x1c, BlkInfo.IpcRefCount);
+ Memory.WriteInt32 (InfoPtr + 0x20, BlkInfo.DeviceRefCount);
+ Memory.WriteInt32 (InfoPtr + 0x24, 0);
+
+ ThreadState.X0 = 0;
+ ThreadState.X1 = 0;
}
- private void SvcMapSharedMemory(CpuThreadState threadState)
+ private void SvcMapSharedMemory(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
- ulong address = threadState.X1;
- ulong size = threadState.X2;
+ int Handle = (int)ThreadState.X0;
+ ulong Address = ThreadState.X1;
+ ulong Size = ThreadState.X2;
- if (!PageAligned(address))
+ if (!PageAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (address + size <= address)
+ if (Address + Size <= Address)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{address:x16} / size 0x{size:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Address:x16} / size 0x{Size:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- MemoryPermission permission = (MemoryPermission)threadState.X3;
+ MemoryPermission Permission = (MemoryPermission)ThreadState.X3;
- if ((permission | MemoryPermission.Write) != MemoryPermission.ReadAndWrite)
+ if ((Permission | MemoryPermission.Write) != MemoryPermission.ReadAndWrite)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {permission}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KSharedMemory sharedMemory = currentProcess.HandleTable.GetObject<KSharedMemory>(handle);
+ KSharedMemory SharedMemory = CurrentProcess.HandleTable.GetObject<KSharedMemory>(Handle);
- if (sharedMemory == null)
+ if (SharedMemory == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (currentProcess.MemoryManager.IsInvalidRegion (address, size) ||
- currentProcess.MemoryManager.InsideHeapRegion (address, size) ||
- currentProcess.MemoryManager.InsideAliasRegion(address, size))
+ if (CurrentProcess.MemoryManager.IsInvalidRegion (Address, Size) ||
+ CurrentProcess.MemoryManager.InsideHeapRegion (Address, Size) ||
+ CurrentProcess.MemoryManager.InsideAliasRegion(Address, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KernelResult result = sharedMemory.MapIntoProcess(
- currentProcess.MemoryManager,
- address,
- size,
- currentProcess,
- permission);
+ KernelResult Result = SharedMemory.MapIntoProcess(
+ CurrentProcess.MemoryManager,
+ Address,
+ Size,
+ CurrentProcess,
+ Permission);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcUnmapSharedMemory(CpuThreadState threadState)
+ private void SvcUnmapSharedMemory(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
- ulong address = threadState.X1;
- ulong size = threadState.X2;
+ int Handle = (int)ThreadState.X0;
+ ulong Address = ThreadState.X1;
+ ulong Size = ThreadState.X2;
- if (!PageAligned(address))
+ if (!PageAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (address + size <= address)
+ if (Address + Size <= Address)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{address:x16} / size 0x{size:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Address:x16} / size 0x{Size:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KSharedMemory sharedMemory = currentProcess.HandleTable.GetObject<KSharedMemory>(handle);
+ KSharedMemory SharedMemory = CurrentProcess.HandleTable.GetObject<KSharedMemory>(Handle);
- if (sharedMemory == null)
+ if (SharedMemory == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid shared memory handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (currentProcess.MemoryManager.IsInvalidRegion (address, size) ||
- currentProcess.MemoryManager.InsideHeapRegion (address, size) ||
- currentProcess.MemoryManager.InsideAliasRegion(address, size))
+ if (CurrentProcess.MemoryManager.IsInvalidRegion (Address, Size) ||
+ CurrentProcess.MemoryManager.InsideHeapRegion (Address, Size) ||
+ CurrentProcess.MemoryManager.InsideAliasRegion(Address, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} out of range!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} out of range!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KernelResult result = sharedMemory.UnmapFromProcess(
- currentProcess.MemoryManager,
- address,
- size,
- currentProcess);
+ KernelResult Result = SharedMemory.UnmapFromProcess(
+ CurrentProcess.MemoryManager,
+ Address,
+ Size,
+ CurrentProcess);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcCreateTransferMemory(CpuThreadState threadState)
+ private void SvcCreateTransferMemory(CpuThreadState ThreadState)
{
- ulong address = threadState.X1;
- ulong size = threadState.X2;
+ ulong Address = ThreadState.X1;
+ ulong Size = ThreadState.X2;
- if (!PageAligned(address))
+ if (!PageAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (address + size <= address)
+ if (Address + Size <= Address)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{address:x16} / size 0x{size:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Address:x16} / size 0x{Size:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- MemoryPermission permission = (MemoryPermission)threadState.X3;
+ MemoryPermission Permission = (MemoryPermission)ThreadState.X3;
- if (permission > MemoryPermission.ReadAndWrite || permission == MemoryPermission.Write)
+ if (Permission > MemoryPermission.ReadAndWrite || Permission == MemoryPermission.Write)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {permission}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid permission {Permission}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidPermission);
return;
}
- _process.MemoryManager.ReserveTransferMemory(address, size, permission);
+ Process.MemoryManager.ReserveTransferMemory(Address, Size, Permission);
- KTransferMemory transferMemory = new KTransferMemory(address, size);
+ KTransferMemory TransferMemory = new KTransferMemory(Address, Size);
- KernelResult result = _process.HandleTable.GenerateHandle(transferMemory, out int handle);
+ KernelResult Result = Process.HandleTable.GenerateHandle(TransferMemory, out int Handle);
- threadState.X0 = (uint)result;
- threadState.X1 = (ulong)handle;
+ ThreadState.X0 = (uint)Result;
+ ThreadState.X1 = (ulong)Handle;
}
- private void SvcMapPhysicalMemory(CpuThreadState threadState)
+ private void SvcMapPhysicalMemory(CpuThreadState ThreadState)
{
- ulong address = threadState.X0;
- ulong size = threadState.X1;
+ ulong Address = ThreadState.X0;
+ ulong Size = ThreadState.X1;
- if (!PageAligned(address))
+ if (!PageAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (address + size <= address)
+ if (Address + Size <= Address)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{address:x16} / size 0x{size:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Address:x16} / size 0x{Size:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if ((currentProcess.PersonalMmHeapPagesCount & 0xfffffffffffff) == 0)
+ if ((CurrentProcess.PersonalMmHeapPagesCount & 0xfffffffffffff) == 0)
{
Logger.PrintWarning(LogClass.KernelSvc, $"System resource size is zero.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
return;
}
- if (!currentProcess.MemoryManager.InsideAddrSpace (address, size) ||
- currentProcess.MemoryManager.OutsideAliasRegion(address, size))
+ if (!CurrentProcess.MemoryManager.InsideAddrSpace (Address, Size) ||
+ CurrentProcess.MemoryManager.OutsideAliasRegion(Address, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {address:x16}.");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {Address:x16}.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KernelResult result = _process.MemoryManager.MapPhysicalMemory(address, size);
+ KernelResult Result = Process.MemoryManager.MapPhysicalMemory(Address, Size);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcUnmapPhysicalMemory(CpuThreadState threadState)
+ private void SvcUnmapPhysicalMemory(CpuThreadState ThreadState)
{
- ulong address = threadState.X0;
- ulong size = threadState.X1;
+ ulong Address = ThreadState.X0;
+ ulong Size = ThreadState.X1;
- if (!PageAligned(address))
+ if (!PageAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{address:x16} is not page aligned!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Address 0x{Address:x16} is not page aligned!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- if (!PageAligned(size) || size == 0)
+ if (!PageAligned(Size) || Size == 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{size:x16} is not page aligned or is zero!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Size 0x{Size:x16} is not page aligned or is zero!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidSize);
return;
}
- if (address + size <= address)
+ if (Address + Size <= Address)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{address:x16} / size 0x{size:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid region address 0x{Address:x16} / size 0x{Size:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if ((currentProcess.PersonalMmHeapPagesCount & 0xfffffffffffff) == 0)
+ if ((CurrentProcess.PersonalMmHeapPagesCount & 0xfffffffffffff) == 0)
{
Logger.PrintWarning(LogClass.KernelSvc, $"System resource size is zero.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidState);
return;
}
- if (!currentProcess.MemoryManager.InsideAddrSpace (address, size) ||
- currentProcess.MemoryManager.OutsideAliasRegion(address, size))
+ if (!CurrentProcess.MemoryManager.InsideAddrSpace (Address, Size) ||
+ CurrentProcess.MemoryManager.OutsideAliasRegion(Address, Size))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {address:x16}.");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address {Address:x16}.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- KernelResult result = _process.MemoryManager.UnmapPhysicalMemory(address, size);
+ KernelResult Result = Process.MemoryManager.UnmapPhysicalMemory(Address, Size);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private static bool PageAligned(ulong position)
+ private static bool PageAligned(ulong Position)
{
- return (position & (KMemoryManager.PageSize - 1)) == 0;
+ return (Position & (KMemoryManager.PageSize - 1)) == 0;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/SvcSystem.cs b/Ryujinx.HLE/HOS/Kernel/SvcSystem.cs
index e42c2b4e..1c1d76f1 100644
--- a/Ryujinx.HLE/HOS/Kernel/SvcSystem.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SvcSystem.cs
@@ -14,286 +14,286 @@ namespace Ryujinx.HLE.HOS.Kernel
{
partial class SvcHandler
{
- private void SvcExitProcess(CpuThreadState threadState)
+ private void SvcExitProcess(CpuThreadState ThreadState)
{
- _system.Scheduler.GetCurrentProcess().Terminate();
+ System.Scheduler.GetCurrentProcess().Terminate();
}
- private void SignalEvent64(CpuThreadState threadState)
+ private void SignalEvent64(CpuThreadState ThreadState)
{
- threadState.X0 = (ulong)SignalEvent((int)threadState.X0);
+ ThreadState.X0 = (ulong)SignalEvent((int)ThreadState.X0);
}
- private KernelResult SignalEvent(int handle)
+ private KernelResult SignalEvent(int Handle)
{
- KWritableEvent writableEvent = _process.HandleTable.GetObject<KWritableEvent>(handle);
+ KWritableEvent WritableEvent = Process.HandleTable.GetObject<KWritableEvent>(Handle);
- KernelResult result;
+ KernelResult Result;
- if (writableEvent != null)
+ if (WritableEvent != null)
{
- writableEvent.Signal();
+ WritableEvent.Signal();
- result = KernelResult.Success;
+ Result = KernelResult.Success;
}
else
{
- result = KernelResult.InvalidHandle;
+ Result = KernelResult.InvalidHandle;
}
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + result + "!");
+ Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
}
- return result;
+ return Result;
}
- private void ClearEvent64(CpuThreadState threadState)
+ private void ClearEvent64(CpuThreadState ThreadState)
{
- threadState.X0 = (ulong)ClearEvent((int)threadState.X0);
+ ThreadState.X0 = (ulong)ClearEvent((int)ThreadState.X0);
}
- private KernelResult ClearEvent(int handle)
+ private KernelResult ClearEvent(int Handle)
{
- KernelResult result;
+ KernelResult Result;
- KWritableEvent writableEvent = _process.HandleTable.GetObject<KWritableEvent>(handle);
+ KWritableEvent WritableEvent = Process.HandleTable.GetObject<KWritableEvent>(Handle);
- if (writableEvent == null)
+ if (WritableEvent == null)
{
- KReadableEvent readableEvent = _process.HandleTable.GetObject<KReadableEvent>(handle);
+ KReadableEvent ReadableEvent = Process.HandleTable.GetObject<KReadableEvent>(Handle);
- result = readableEvent?.Clear() ?? KernelResult.InvalidHandle;
+ Result = ReadableEvent?.Clear() ?? KernelResult.InvalidHandle;
}
else
{
- result = writableEvent.Clear();
+ Result = WritableEvent.Clear();
}
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + result + "!");
+ Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
}
- return result;
+ return Result;
}
- private void SvcCloseHandle(CpuThreadState threadState)
+ private void SvcCloseHandle(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
+ int Handle = (int)ThreadState.X0;
- object obj = _process.HandleTable.GetObject<object>(handle);
+ object Obj = Process.HandleTable.GetObject<object>(Handle);
- _process.HandleTable.CloseHandle(handle);
+ Process.HandleTable.CloseHandle(Handle);
- if (obj == null)
+ if (Obj == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (obj is KSession session)
+ if (Obj is KSession Session)
{
- session.Dispose();
+ Session.Dispose();
}
- else if (obj is KTransferMemory transferMemory)
+ else if (Obj is KTransferMemory TransferMemory)
{
- _process.MemoryManager.ResetTransferMemory(
- transferMemory.Address,
- transferMemory.Size);
+ Process.MemoryManager.ResetTransferMemory(
+ TransferMemory.Address,
+ TransferMemory.Size);
}
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
- private void ResetSignal64(CpuThreadState threadState)
+ private void ResetSignal64(CpuThreadState ThreadState)
{
- threadState.X0 = (ulong)ResetSignal((int)threadState.X0);
+ ThreadState.X0 = (ulong)ResetSignal((int)ThreadState.X0);
}
- private KernelResult ResetSignal(int handle)
+ private KernelResult ResetSignal(int Handle)
{
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KReadableEvent readableEvent = currentProcess.HandleTable.GetObject<KReadableEvent>(handle);
+ KReadableEvent ReadableEvent = CurrentProcess.HandleTable.GetObject<KReadableEvent>(Handle);
- KernelResult result;
+ KernelResult Result;
- if (readableEvent != null)
+ if (ReadableEvent != null)
{
- result = readableEvent.ClearIfSignaled();
+ Result = ReadableEvent.ClearIfSignaled();
}
else
{
- KProcess process = currentProcess.HandleTable.GetKProcess(handle);
+ KProcess Process = CurrentProcess.HandleTable.GetKProcess(Handle);
- if (process != null)
+ if (Process != null)
{
- result = process.ClearIfNotExited();
+ Result = Process.ClearIfNotExited();
}
else
{
- result = KernelResult.InvalidHandle;
+ Result = KernelResult.InvalidHandle;
}
}
- if (result == KernelResult.InvalidState)
+ if (Result == KernelResult.InvalidState)
{
- Logger.PrintDebug(LogClass.KernelSvc, "Operation failed with error: " + result + "!");
+ Logger.PrintDebug(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
}
- else if (result != KernelResult.Success)
+ else if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + result + "!");
+ Logger.PrintWarning(LogClass.KernelSvc, "Operation failed with error: " + Result + "!");
}
- return result;
+ return Result;
}
- private void SvcGetSystemTick(CpuThreadState threadState)
+ private void SvcGetSystemTick(CpuThreadState ThreadState)
{
- threadState.X0 = threadState.CntpctEl0;
+ ThreadState.X0 = ThreadState.CntpctEl0;
}
- private void SvcConnectToNamedPort(CpuThreadState threadState)
+ private void SvcConnectToNamedPort(CpuThreadState ThreadState)
{
- long stackPtr = (long)threadState.X0;
- long namePtr = (long)threadState.X1;
+ long StackPtr = (long)ThreadState.X0;
+ long NamePtr = (long)ThreadState.X1;
- string name = MemoryHelper.ReadAsciiString(_memory, namePtr, 8);
+ string Name = MemoryHelper.ReadAsciiString(Memory, NamePtr, 8);
//TODO: Validate that app has perms to access the service, and that the service
//actually exists, return error codes otherwise.
- KSession session = new KSession(ServiceFactory.MakeService(_system, name), name);
+ KSession Session = new KSession(ServiceFactory.MakeService(System, Name), Name);
- if (_process.HandleTable.GenerateHandle(session, out int handle) != KernelResult.Success)
+ if (Process.HandleTable.GenerateHandle(Session, out int Handle) != KernelResult.Success)
{
throw new InvalidOperationException("Out of handles!");
}
- threadState.X0 = 0;
- threadState.X1 = (uint)handle;
+ ThreadState.X0 = 0;
+ ThreadState.X1 = (uint)Handle;
}
- private void SvcSendSyncRequest(CpuThreadState threadState)
+ private void SvcSendSyncRequest(CpuThreadState ThreadState)
{
- SendSyncRequest(threadState, threadState.Tpidr, 0x100, (int)threadState.X0);
+ SendSyncRequest(ThreadState, ThreadState.Tpidr, 0x100, (int)ThreadState.X0);
}
- private void SvcSendSyncRequestWithUserBuffer(CpuThreadState threadState)
+ private void SvcSendSyncRequestWithUserBuffer(CpuThreadState ThreadState)
{
SendSyncRequest(
- threadState,
- (long)threadState.X0,
- (long)threadState.X1,
- (int)threadState.X2);
+ ThreadState,
+ (long)ThreadState.X0,
+ (long)ThreadState.X1,
+ (int)ThreadState.X2);
}
- private void SendSyncRequest(CpuThreadState threadState, long messagePtr, long size, int handle)
+ private void SendSyncRequest(CpuThreadState ThreadState, long MessagePtr, long Size, int Handle)
{
- byte[] messageData = _memory.ReadBytes(messagePtr, size);
+ byte[] MessageData = Memory.ReadBytes(MessagePtr, Size);
- KSession session = _process.HandleTable.GetObject<KSession>(handle);
+ KSession Session = Process.HandleTable.GetObject<KSession>(Handle);
- if (session != null)
+ if (Session != null)
{
- _system.CriticalSection.Enter();
+ System.CriticalSection.Enter();
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- currentThread.SignaledObj = null;
- currentThread.ObjSyncResult = 0;
+ CurrentThread.SignaledObj = null;
+ CurrentThread.ObjSyncResult = 0;
- currentThread.Reschedule(ThreadSchedState.Paused);
+ CurrentThread.Reschedule(ThreadSchedState.Paused);
- IpcMessage message = new IpcMessage(messageData, messagePtr);
+ IpcMessage Message = new IpcMessage(MessageData, MessagePtr);
ThreadPool.QueueUserWorkItem(ProcessIpcRequest, new HleIpcMessage(
- currentThread,
- session,
- message,
- messagePtr));
+ CurrentThread,
+ Session,
+ Message,
+ MessagePtr));
- _system.ThreadCounter.AddCount();
+ System.ThreadCounter.AddCount();
- _system.CriticalSection.Leave();
+ System.CriticalSection.Leave();
- threadState.X0 = (ulong)currentThread.ObjSyncResult;
+ ThreadState.X0 = (ulong)CurrentThread.ObjSyncResult;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid session handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid session handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
}
- private void ProcessIpcRequest(object state)
+ private void ProcessIpcRequest(object State)
{
- HleIpcMessage ipcMessage = (HleIpcMessage)state;
+ HleIpcMessage IpcMessage = (HleIpcMessage)State;
- ipcMessage.Thread.ObjSyncResult = (int)IpcHandler.IpcCall(
- _device,
- _process,
- _memory,
- ipcMessage.Session,
- ipcMessage.Message,
- ipcMessage.MessagePtr);
+ IpcMessage.Thread.ObjSyncResult = (int)IpcHandler.IpcCall(
+ Device,
+ Process,
+ Memory,
+ IpcMessage.Session,
+ IpcMessage.Message,
+ IpcMessage.MessagePtr);
- _system.ThreadCounter.Signal();
+ System.ThreadCounter.Signal();
- ipcMessage.Thread.Reschedule(ThreadSchedState.Running);
+ IpcMessage.Thread.Reschedule(ThreadSchedState.Running);
}
- private void GetProcessId64(CpuThreadState threadState)
+ private void GetProcessId64(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X1;
+ int Handle = (int)ThreadState.X1;
- KernelResult result = GetProcessId(handle, out long pid);
+ KernelResult Result = GetProcessId(Handle, out long Pid);
- threadState.X0 = (ulong)result;
- threadState.X1 = (ulong)pid;
+ ThreadState.X0 = (ulong)Result;
+ ThreadState.X1 = (ulong)Pid;
}
- private KernelResult GetProcessId(int handle, out long pid)
+ private KernelResult GetProcessId(int Handle, out long Pid)
{
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KProcess process = currentProcess.HandleTable.GetKProcess(handle);
+ KProcess Process = CurrentProcess.HandleTable.GetKProcess(Handle);
- if (process == null)
+ if (Process == null)
{
- KThread thread = currentProcess.HandleTable.GetKThread(handle);
+ KThread Thread = CurrentProcess.HandleTable.GetKThread(Handle);
- if (thread != null)
+ if (Thread != null)
{
- process = thread.Owner;
+ Process = Thread.Owner;
}
//TODO: KDebugEvent.
}
- pid = process?.Pid ?? 0;
+ Pid = Process?.Pid ?? 0;
- return process != null
+ return Process != null
? KernelResult.Success
: KernelResult.InvalidHandle;
}
- private void SvcBreak(CpuThreadState threadState)
+ private void SvcBreak(CpuThreadState ThreadState)
{
- long reason = (long)threadState.X0;
- long unknown = (long)threadState.X1;
- long info = (long)threadState.X2;
+ long Reason = (long)ThreadState.X0;
+ long Unknown = (long)ThreadState.X1;
+ long Info = (long)ThreadState.X2;
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- if ((reason & (1 << 31)) == 0)
+ if ((Reason & (1 << 31)) == 0)
{
- currentThread.PrintGuestStackTrace();
+ CurrentThread.PrintGuestStackTrace();
throw new GuestBrokeExecutionException();
}
@@ -301,40 +301,40 @@ namespace Ryujinx.HLE.HOS.Kernel
{
Logger.PrintInfo(LogClass.KernelSvc, "Debugger triggered.");
- currentThread.PrintGuestStackTrace();
+ CurrentThread.PrintGuestStackTrace();
}
}
- private void SvcOutputDebugString(CpuThreadState threadState)
+ private void SvcOutputDebugString(CpuThreadState ThreadState)
{
- long position = (long)threadState.X0;
- long size = (long)threadState.X1;
+ long Position = (long)ThreadState.X0;
+ long Size = (long)ThreadState.X1;
- string str = MemoryHelper.ReadAsciiString(_memory, position, size);
+ string Str = MemoryHelper.ReadAsciiString(Memory, Position, Size);
- Logger.PrintWarning(LogClass.KernelSvc, str);
+ Logger.PrintWarning(LogClass.KernelSvc, Str);
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
- private void GetInfo64(CpuThreadState threadState)
+ private void GetInfo64(CpuThreadState ThreadState)
{
- long stackPtr = (long)threadState.X0;
- uint id = (uint)threadState.X1;
- int handle = (int)threadState.X2;
- long subId = (long)threadState.X3;
+ long StackPtr = (long)ThreadState.X0;
+ uint Id = (uint)ThreadState.X1;
+ int Handle = (int)ThreadState.X2;
+ long SubId = (long)ThreadState.X3;
- KernelResult result = GetInfo(id, handle, subId, out long value);
+ KernelResult Result = GetInfo(Id, Handle, SubId, out long Value);
- threadState.X0 = (ulong)result;
- threadState.X1 = (ulong)value;
+ ThreadState.X0 = (ulong)Result;
+ ThreadState.X1 = (ulong)Value;
}
- private KernelResult GetInfo(uint id, int handle, long subId, out long value)
+ private KernelResult GetInfo(uint Id, int Handle, long SubId, out long Value)
{
- value = 0;
+ Value = 0;
- switch (id)
+ switch (Id)
{
case 0:
case 1:
@@ -355,62 +355,62 @@ namespace Ryujinx.HLE.HOS.Kernel
case 21:
case 22:
{
- if (subId != 0)
+ if (SubId != 0)
{
return KernelResult.InvalidCombination;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KProcess process = currentProcess.HandleTable.GetKProcess(handle);
+ KProcess Process = CurrentProcess.HandleTable.GetKProcess(Handle);
- if (process == null)
+ if (Process == null)
{
return KernelResult.InvalidHandle;
}
- switch (id)
+ switch (Id)
{
- case 0: value = process.Capabilities.AllowedCpuCoresMask; break;
- case 1: value = process.Capabilities.AllowedThreadPriosMask; break;
+ case 0: Value = Process.Capabilities.AllowedCpuCoresMask; break;
+ case 1: Value = Process.Capabilities.AllowedThreadPriosMask; break;
- case 2: value = (long)process.MemoryManager.AliasRegionStart; break;
- case 3: value = (long)(process.MemoryManager.AliasRegionEnd -
- process.MemoryManager.AliasRegionStart); break;
+ case 2: Value = (long)Process.MemoryManager.AliasRegionStart; break;
+ case 3: Value = (long)(Process.MemoryManager.AliasRegionEnd -
+ Process.MemoryManager.AliasRegionStart); break;
- case 4: value = (long)process.MemoryManager.HeapRegionStart; break;
- case 5: value = (long)(process.MemoryManager.HeapRegionEnd -
- process.MemoryManager.HeapRegionStart); break;
+ case 4: Value = (long)Process.MemoryManager.HeapRegionStart; break;
+ case 5: Value = (long)(Process.MemoryManager.HeapRegionEnd -
+ Process.MemoryManager.HeapRegionStart); break;
- case 6: value = (long)process.GetMemoryCapacity(); break;
+ case 6: Value = (long)Process.GetMemoryCapacity(); break;
- case 7: value = (long)process.GetMemoryUsage(); break;
+ case 7: Value = (long)Process.GetMemoryUsage(); break;
- case 12: value = (long)process.MemoryManager.GetAddrSpaceBaseAddr(); break;
+ case 12: Value = (long)Process.MemoryManager.GetAddrSpaceBaseAddr(); break;
- case 13: value = (long)process.MemoryManager.GetAddrSpaceSize(); break;
+ case 13: Value = (long)Process.MemoryManager.GetAddrSpaceSize(); break;
- case 14: value = (long)process.MemoryManager.StackRegionStart; break;
- case 15: value = (long)(process.MemoryManager.StackRegionEnd -
- process.MemoryManager.StackRegionStart); break;
+ case 14: Value = (long)Process.MemoryManager.StackRegionStart; break;
+ case 15: Value = (long)(Process.MemoryManager.StackRegionEnd -
+ Process.MemoryManager.StackRegionStart); break;
- case 16: value = (long)process.PersonalMmHeapPagesCount * KMemoryManager.PageSize; break;
+ case 16: Value = (long)Process.PersonalMmHeapPagesCount * KMemoryManager.PageSize; break;
case 17:
- if (process.PersonalMmHeapPagesCount != 0)
+ if (Process.PersonalMmHeapPagesCount != 0)
{
- value = process.MemoryManager.GetMmUsedPages() * KMemoryManager.PageSize;
+ Value = Process.MemoryManager.GetMmUsedPages() * KMemoryManager.PageSize;
}
break;
- case 18: value = process.TitleId; break;
+ case 18: Value = Process.TitleId; break;
- case 20: value = (long)process.UserExceptionContextAddress; break;
+ case 20: Value = (long)Process.UserExceptionContextAddress; break;
- case 21: value = (long)process.GetMemoryCapacityWithoutPersonalMmHeap(); break;
+ case 21: Value = (long)Process.GetMemoryCapacityWithoutPersonalMmHeap(); break;
- case 22: value = (long)process.GetMemoryUsageWithoutPersonalMmHeap(); break;
+ case 22: Value = (long)Process.GetMemoryUsageWithoutPersonalMmHeap(); break;
}
break;
@@ -418,48 +418,48 @@ namespace Ryujinx.HLE.HOS.Kernel
case 8:
{
- if (handle != 0)
+ if (Handle != 0)
{
return KernelResult.InvalidHandle;
}
- if (subId != 0)
+ if (SubId != 0)
{
return KernelResult.InvalidCombination;
}
- value = _system.Scheduler.GetCurrentProcess().Debug ? 1 : 0;
+ Value = System.Scheduler.GetCurrentProcess().Debug ? 1 : 0;
break;
}
case 9:
{
- if (handle != 0)
+ if (Handle != 0)
{
return KernelResult.InvalidHandle;
}
- if (subId != 0)
+ if (SubId != 0)
{
return KernelResult.InvalidCombination;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (currentProcess.ResourceLimit != null)
+ if (CurrentProcess.ResourceLimit != null)
{
- KHandleTable handleTable = currentProcess.HandleTable;
- KResourceLimit resourceLimit = currentProcess.ResourceLimit;
+ KHandleTable HandleTable = CurrentProcess.HandleTable;
+ KResourceLimit ResourceLimit = CurrentProcess.ResourceLimit;
- KernelResult result = handleTable.GenerateHandle(resourceLimit, out int resLimHandle);
+ KernelResult Result = HandleTable.GenerateHandle(ResourceLimit, out int ResLimHandle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- value = (uint)resLimHandle;
+ Value = (uint)ResLimHandle;
}
break;
@@ -467,84 +467,84 @@ namespace Ryujinx.HLE.HOS.Kernel
case 10:
{
- if (handle != 0)
+ if (Handle != 0)
{
return KernelResult.InvalidHandle;
}
- int currentCore = _system.Scheduler.GetCurrentThread().CurrentCore;
+ int CurrentCore = System.Scheduler.GetCurrentThread().CurrentCore;
- if (subId != -1 && subId != currentCore)
+ if (SubId != -1 && SubId != CurrentCore)
{
return KernelResult.InvalidCombination;
}
- value = _system.Scheduler.CoreContexts[currentCore].TotalIdleTimeTicks;
+ Value = System.Scheduler.CoreContexts[CurrentCore].TotalIdleTimeTicks;
break;
}
case 11:
{
- if (handle != 0)
+ if (Handle != 0)
{
return KernelResult.InvalidHandle;
}
- if ((ulong)subId > 3)
+ if ((ulong)SubId > 3)
{
return KernelResult.InvalidCombination;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- value = currentProcess.RandomEntropy[subId];
+ Value = CurrentProcess.RandomEntropy[SubId];
break;
}
case 0xf0000002u:
{
- if (subId < -1 || subId > 3)
+ if (SubId < -1 || SubId > 3)
{
return KernelResult.InvalidCombination;
}
- KThread thread = _system.Scheduler.GetCurrentProcess().HandleTable.GetKThread(handle);
+ KThread Thread = System.Scheduler.GetCurrentProcess().HandleTable.GetKThread(Handle);
- if (thread == null)
+ if (Thread == null)
{
return KernelResult.InvalidHandle;
}
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- int currentCore = currentThread.CurrentCore;
+ int CurrentCore = CurrentThread.CurrentCore;
- if (subId != -1 && subId != currentCore)
+ if (SubId != -1 && SubId != CurrentCore)
{
return KernelResult.Success;
}
- KCoreContext coreContext = _system.Scheduler.CoreContexts[currentCore];
+ KCoreContext CoreContext = System.Scheduler.CoreContexts[CurrentCore];
- long timeDelta = PerformanceCounter.ElapsedMilliseconds - coreContext.LastContextSwitchTime;
+ long TimeDelta = PerformanceCounter.ElapsedMilliseconds - CoreContext.LastContextSwitchTime;
- if (subId != -1)
+ if (SubId != -1)
{
- value = KTimeManager.ConvertMillisecondsToTicks(timeDelta);
+ Value = KTimeManager.ConvertMillisecondsToTicks(TimeDelta);
}
else
{
- long totalTimeRunning = thread.TotalTimeRunning;
+ long TotalTimeRunning = Thread.TotalTimeRunning;
- if (thread == currentThread)
+ if (Thread == CurrentThread)
{
- totalTimeRunning += timeDelta;
+ TotalTimeRunning += TimeDelta;
}
- value = KTimeManager.ConvertMillisecondsToTicks(totalTimeRunning);
+ Value = KTimeManager.ConvertMillisecondsToTicks(TotalTimeRunning);
}
break;
@@ -556,144 +556,144 @@ namespace Ryujinx.HLE.HOS.Kernel
return KernelResult.Success;
}
- private void CreateEvent64(CpuThreadState state)
+ private void CreateEvent64(CpuThreadState State)
{
- KernelResult result = CreateEvent(out int wEventHandle, out int rEventHandle);
+ KernelResult Result = CreateEvent(out int WEventHandle, out int REventHandle);
- state.X0 = (ulong)result;
- state.X1 = (ulong)wEventHandle;
- state.X2 = (ulong)rEventHandle;
+ State.X0 = (ulong)Result;
+ State.X1 = (ulong)WEventHandle;
+ State.X2 = (ulong)REventHandle;
}
- private KernelResult CreateEvent(out int wEventHandle, out int rEventHandle)
+ private KernelResult CreateEvent(out int WEventHandle, out int REventHandle)
{
- KEvent Event = new KEvent(_system);
+ KEvent Event = new KEvent(System);
- KernelResult result = _process.HandleTable.GenerateHandle(Event.WritableEvent, out wEventHandle);
+ KernelResult Result = Process.HandleTable.GenerateHandle(Event.WritableEvent, out WEventHandle);
- if (result == KernelResult.Success)
+ if (Result == KernelResult.Success)
{
- result = _process.HandleTable.GenerateHandle(Event.ReadableEvent, out rEventHandle);
+ Result = Process.HandleTable.GenerateHandle(Event.ReadableEvent, out REventHandle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- _process.HandleTable.CloseHandle(wEventHandle);
+ Process.HandleTable.CloseHandle(WEventHandle);
}
}
else
{
- rEventHandle = 0;
+ REventHandle = 0;
}
- return result;
+ return Result;
}
- private void GetProcessList64(CpuThreadState state)
+ private void GetProcessList64(CpuThreadState State)
{
- ulong address = state.X1;
- int maxOut = (int)state.X2;
+ ulong Address = State.X1;
+ int MaxOut = (int)State.X2;
- KernelResult result = GetProcessList(address, maxOut, out int count);
+ KernelResult Result = GetProcessList(Address, MaxOut, out int Count);
- state.X0 = (ulong)result;
- state.X1 = (ulong)count;
+ State.X0 = (ulong)Result;
+ State.X1 = (ulong)Count;
}
- private KernelResult GetProcessList(ulong address, int maxCount, out int count)
+ private KernelResult GetProcessList(ulong Address, int MaxCount, out int Count)
{
- count = 0;
+ Count = 0;
- if ((maxCount >> 28) != 0)
+ if ((MaxCount >> 28) != 0)
{
return KernelResult.MaximumExceeded;
}
- if (maxCount != 0)
+ if (MaxCount != 0)
{
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- ulong copySize = (ulong)maxCount * 8;
+ ulong CopySize = (ulong)MaxCount * 8;
- if (address + copySize <= address)
+ if (Address + CopySize <= Address)
{
return KernelResult.InvalidMemState;
}
- if (currentProcess.MemoryManager.OutsideAddrSpace(address, copySize))
+ if (CurrentProcess.MemoryManager.OutsideAddrSpace(Address, CopySize))
{
return KernelResult.InvalidMemState;
}
}
- int copyCount = 0;
+ int CopyCount = 0;
- lock (_system.Processes)
+ lock (System.Processes)
{
- foreach (KProcess process in _system.Processes.Values)
+ foreach (KProcess Process in System.Processes.Values)
{
- if (copyCount < maxCount)
+ if (CopyCount < MaxCount)
{
- if (!KernelTransfer.KernelToUserInt64(_system, (long)address + copyCount * 8, process.Pid))
+ if (!KernelTransfer.KernelToUserInt64(System, (long)Address + CopyCount * 8, Process.Pid))
{
return KernelResult.UserCopyFailed;
}
}
- copyCount++;
+ CopyCount++;
}
}
- count = copyCount;
+ Count = CopyCount;
return KernelResult.Success;
}
- private void GetSystemInfo64(CpuThreadState state)
+ private void GetSystemInfo64(CpuThreadState State)
{
- uint id = (uint)state.X1;
- int handle = (int)state.X2;
- long subId = (long)state.X3;
+ uint Id = (uint)State.X1;
+ int Handle = (int)State.X2;
+ long SubId = (long)State.X3;
- KernelResult result = GetSystemInfo(id, handle, subId, out long value);
+ KernelResult Result = GetSystemInfo(Id, Handle, SubId, out long Value);
- state.X0 = (ulong)result;
- state.X1 = (ulong)value;
+ State.X0 = (ulong)Result;
+ State.X1 = (ulong)Value;
}
- private KernelResult GetSystemInfo(uint id, int handle, long subId, out long value)
+ private KernelResult GetSystemInfo(uint Id, int Handle, long SubId, out long Value)
{
- value = 0;
+ Value = 0;
- if (id > 2)
+ if (Id > 2)
{
return KernelResult.InvalidEnumValue;
}
- if (handle != 0)
+ if (Handle != 0)
{
return KernelResult.InvalidHandle;
}
- if (id < 2)
+ if (Id < 2)
{
- if ((ulong)subId > 3)
+ if ((ulong)SubId > 3)
{
return KernelResult.InvalidCombination;
}
- KMemoryRegionManager region = _system.MemoryRegions[subId];
+ KMemoryRegionManager Region = System.MemoryRegions[SubId];
- switch (id)
+ switch (Id)
{
//Memory region capacity.
- case 0: value = (long)region.Size; break;
+ case 0: Value = (long)Region.Size; break;
//Memory region free space.
case 1:
{
- ulong freePagesCount = region.GetFreePages();
+ ulong FreePagesCount = Region.GetFreePages();
- value = (long)(freePagesCount * KMemoryManager.PageSize);
+ Value = (long)(FreePagesCount * KMemoryManager.PageSize);
break;
}
@@ -701,127 +701,127 @@ namespace Ryujinx.HLE.HOS.Kernel
}
else /* if (Id == 2) */
{
- if ((ulong)subId > 1)
+ if ((ulong)SubId > 1)
{
return KernelResult.InvalidCombination;
}
- switch (subId)
+ switch (SubId)
{
- case 0: value = _system.PrivilegedProcessLowestId; break;
- case 1: value = _system.PrivilegedProcessHighestId; break;
+ case 0: Value = System.PrivilegedProcessLowestId; break;
+ case 1: Value = System.PrivilegedProcessHighestId; break;
}
}
return KernelResult.Success;
}
- private void CreatePort64(CpuThreadState state)
+ private void CreatePort64(CpuThreadState State)
{
- int maxSessions = (int)state.X2;
- bool isLight = (state.X3 & 1) != 0;
- long nameAddress = (long)state.X4;
-
- KernelResult result = CreatePort(
- maxSessions,
- isLight,
- nameAddress,
- out int serverPortHandle,
- out int clientPortHandle);
-
- state.X0 = (ulong)result;
- state.X1 = (ulong)serverPortHandle;
- state.X2 = (ulong)clientPortHandle;
+ int MaxSessions = (int)State.X2;
+ bool IsLight = (State.X3 & 1) != 0;
+ long NameAddress = (long)State.X4;
+
+ KernelResult Result = CreatePort(
+ MaxSessions,
+ IsLight,
+ NameAddress,
+ out int ServerPortHandle,
+ out int ClientPortHandle);
+
+ State.X0 = (ulong)Result;
+ State.X1 = (ulong)ServerPortHandle;
+ State.X2 = (ulong)ClientPortHandle;
}
private KernelResult CreatePort(
- int maxSessions,
- bool isLight,
- long nameAddress,
- out int serverPortHandle,
- out int clientPortHandle)
+ int MaxSessions,
+ bool IsLight,
+ long NameAddress,
+ out int ServerPortHandle,
+ out int ClientPortHandle)
{
- serverPortHandle = clientPortHandle = 0;
+ ServerPortHandle = ClientPortHandle = 0;
- if (maxSessions < 1)
+ if (MaxSessions < 1)
{
return KernelResult.MaximumExceeded;
}
- KPort port = new KPort(_system);
+ KPort Port = new KPort(System);
- port.Initialize(maxSessions, isLight, nameAddress);
+ Port.Initialize(MaxSessions, IsLight, NameAddress);
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KernelResult result = currentProcess.HandleTable.GenerateHandle(port.ClientPort, out clientPortHandle);
+ KernelResult Result = CurrentProcess.HandleTable.GenerateHandle(Port.ClientPort, out ClientPortHandle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- result = currentProcess.HandleTable.GenerateHandle(port.ServerPort, out serverPortHandle);
+ Result = CurrentProcess.HandleTable.GenerateHandle(Port.ServerPort, out ServerPortHandle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- currentProcess.HandleTable.CloseHandle(clientPortHandle);
+ CurrentProcess.HandleTable.CloseHandle(ClientPortHandle);
}
- return result;
+ return Result;
}
- private void ManageNamedPort64(CpuThreadState state)
+ private void ManageNamedPort64(CpuThreadState State)
{
- long nameAddress = (long)state.X1;
- int maxSessions = (int)state.X2;
+ long NameAddress = (long)State.X1;
+ int MaxSessions = (int)State.X2;
- KernelResult result = ManageNamedPort(nameAddress, maxSessions, out int handle);
+ KernelResult Result = ManageNamedPort(NameAddress, MaxSessions, out int Handle);
- state.X0 = (ulong)result;
- state.X1 = (ulong)handle;
+ State.X0 = (ulong)Result;
+ State.X1 = (ulong)Handle;
}
- private KernelResult ManageNamedPort(long nameAddress, int maxSessions, out int handle)
+ private KernelResult ManageNamedPort(long NameAddress, int MaxSessions, out int Handle)
{
- handle = 0;
+ Handle = 0;
- if (!KernelTransfer.UserToKernelString(_system, nameAddress, 12, out string name))
+ if (!KernelTransfer.UserToKernelString(System, NameAddress, 12, out string Name))
{
return KernelResult.UserCopyFailed;
}
- if (maxSessions < 0 || name.Length > 11)
+ if (MaxSessions < 0 || Name.Length > 11)
{
return KernelResult.MaximumExceeded;
}
- if (maxSessions == 0)
+ if (MaxSessions == 0)
{
- return KClientPort.RemoveName(_system, name);
+ return KClientPort.RemoveName(System, Name);
}
- KPort port = new KPort(_system);
+ KPort Port = new KPort(System);
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- KernelResult result = currentProcess.HandleTable.GenerateHandle(port.ServerPort, out handle);
+ KernelResult Result = CurrentProcess.HandleTable.GenerateHandle(Port.ServerPort, out Handle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- return result;
+ return Result;
}
- port.Initialize(maxSessions, false, 0);
+ Port.Initialize(MaxSessions, false, 0);
- result = port.SetName(name);
+ Result = Port.SetName(Name);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- currentProcess.HandleTable.CloseHandle(handle);
+ CurrentProcess.HandleTable.CloseHandle(Handle);
}
- return result;
+ return Result;
}
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/SvcThread.cs b/Ryujinx.HLE/HOS/Kernel/SvcThread.cs
index 0121303d..ded8f8dc 100644
--- a/Ryujinx.HLE/HOS/Kernel/SvcThread.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SvcThread.cs
@@ -7,458 +7,458 @@ namespace Ryujinx.HLE.HOS.Kernel
{
partial class SvcHandler
{
- private void CreateThread64(CpuThreadState threadState)
+ private void CreateThread64(CpuThreadState ThreadState)
{
- ulong entrypoint = threadState.X1;
- ulong argsPtr = threadState.X2;
- ulong stackTop = threadState.X3;
- int priority = (int)threadState.X4;
- int cpuCore = (int)threadState.X5;
+ ulong Entrypoint = ThreadState.X1;
+ ulong ArgsPtr = ThreadState.X2;
+ ulong StackTop = ThreadState.X3;
+ int Priority = (int)ThreadState.X4;
+ int CpuCore = (int)ThreadState.X5;
- KernelResult result = CreateThread(entrypoint, argsPtr, stackTop, priority, cpuCore, out int handle);
+ KernelResult Result = CreateThread(Entrypoint, ArgsPtr, StackTop, Priority, CpuCore, out int Handle);
- threadState.X0 = (ulong)result;
- threadState.X1 = (ulong)handle;
+ ThreadState.X0 = (ulong)Result;
+ ThreadState.X1 = (ulong)Handle;
}
private KernelResult CreateThread(
- ulong entrypoint,
- ulong argsPtr,
- ulong stackTop,
- int priority,
- int cpuCore,
- out int handle)
+ ulong Entrypoint,
+ ulong ArgsPtr,
+ ulong StackTop,
+ int Priority,
+ int CpuCore,
+ out int Handle)
{
- handle = 0;
+ Handle = 0;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (cpuCore == -2)
+ if (CpuCore == -2)
{
- cpuCore = currentProcess.DefaultCpuCore;
+ CpuCore = CurrentProcess.DefaultCpuCore;
}
- if ((uint)cpuCore >= KScheduler.CpuCoresCount || !currentProcess.IsCpuCoreAllowed(cpuCore))
+ if ((uint)CpuCore >= KScheduler.CpuCoresCount || !CurrentProcess.IsCpuCoreAllowed(CpuCore))
{
return KernelResult.InvalidCpuCore;
}
- if ((uint)priority >= KScheduler.PrioritiesCount || !currentProcess.IsPriorityAllowed(priority))
+ if ((uint)Priority >= KScheduler.PrioritiesCount || !CurrentProcess.IsPriorityAllowed(Priority))
{
return KernelResult.InvalidPriority;
}
- long timeout = KTimeManager.ConvertMillisecondsToNanoseconds(100);
+ long Timeout = KTimeManager.ConvertMillisecondsToNanoseconds(100);
- if (currentProcess.ResourceLimit != null &&
- !currentProcess.ResourceLimit.Reserve(LimitableResource.Thread, 1, timeout))
+ if (CurrentProcess.ResourceLimit != null &&
+ !CurrentProcess.ResourceLimit.Reserve(LimitableResource.Thread, 1, Timeout))
{
return KernelResult.ResLimitExceeded;
}
- KThread thread = new KThread(_system);
+ KThread Thread = new KThread(System);
- KernelResult result = currentProcess.InitializeThread(
- thread,
- entrypoint,
- argsPtr,
- stackTop,
- priority,
- cpuCore);
+ KernelResult Result = CurrentProcess.InitializeThread(
+ Thread,
+ Entrypoint,
+ ArgsPtr,
+ StackTop,
+ Priority,
+ CpuCore);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- currentProcess.ResourceLimit?.Release(LimitableResource.Thread, 1);
+ CurrentProcess.ResourceLimit?.Release(LimitableResource.Thread, 1);
- return result;
+ return Result;
}
- result = _process.HandleTable.GenerateHandle(thread, out handle);
+ Result = Process.HandleTable.GenerateHandle(Thread, out Handle);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- thread.Terminate();
+ Thread.Terminate();
- currentProcess.ResourceLimit?.Release(LimitableResource.Thread, 1);
+ CurrentProcess.ResourceLimit?.Release(LimitableResource.Thread, 1);
}
- return result;
+ return Result;
}
- private void SvcStartThread(CpuThreadState threadState)
+ private void SvcStartThread(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
+ int Handle = (int)ThreadState.X0;
- KThread thread = _process.HandleTable.GetObject<KThread>(handle);
+ KThread Thread = Process.HandleTable.GetObject<KThread>(Handle);
- if (thread != null)
+ if (Thread != null)
{
- KernelResult result = thread.Start();
+ KernelResult Result = Thread.Start();
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
}
- private void SvcExitThread(CpuThreadState threadState)
+ private void SvcExitThread(CpuThreadState ThreadState)
{
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- _system.Scheduler.ExitThread(currentThread);
+ System.Scheduler.ExitThread(CurrentThread);
- currentThread.Exit();
+ CurrentThread.Exit();
}
- private void SvcSleepThread(CpuThreadState threadState)
+ private void SvcSleepThread(CpuThreadState ThreadState)
{
- long timeout = (long)threadState.X0;
+ long Timeout = (long)ThreadState.X0;
- Logger.PrintDebug(LogClass.KernelSvc, "Timeout = 0x" + timeout.ToString("x16"));
+ Logger.PrintDebug(LogClass.KernelSvc, "Timeout = 0x" + Timeout.ToString("x16"));
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- if (timeout < 1)
+ if (Timeout < 1)
{
- switch (timeout)
+ switch (Timeout)
{
- case 0: currentThread.Yield(); break;
- case -1: currentThread.YieldWithLoadBalancing(); break;
- case -2: currentThread.YieldAndWaitForLoadBalancing(); break;
+ case 0: CurrentThread.Yield(); break;
+ case -1: CurrentThread.YieldWithLoadBalancing(); break;
+ case -2: CurrentThread.YieldAndWaitForLoadBalancing(); break;
}
}
else
{
- currentThread.Sleep(timeout);
+ CurrentThread.Sleep(Timeout);
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
}
- private void SvcGetThreadPriority(CpuThreadState threadState)
+ private void SvcGetThreadPriority(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X1;
+ int Handle = (int)ThreadState.X1;
- KThread thread = _process.HandleTable.GetKThread(handle);
+ KThread Thread = Process.HandleTable.GetKThread(Handle);
- if (thread != null)
+ if (Thread != null)
{
- threadState.X0 = 0;
- threadState.X1 = (ulong)thread.DynamicPriority;
+ ThreadState.X0 = 0;
+ ThreadState.X1 = (ulong)Thread.DynamicPriority;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
}
- private void SvcSetThreadPriority(CpuThreadState threadState)
+ private void SvcSetThreadPriority(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
- int priority = (int)threadState.X1;
+ int Handle = (int)ThreadState.X0;
+ int Priority = (int)ThreadState.X1;
Logger.PrintDebug(LogClass.KernelSvc,
- "Handle = 0x" + handle .ToString("x8") + ", " +
- "Priority = 0x" + priority.ToString("x8"));
+ "Handle = 0x" + Handle .ToString("x8") + ", " +
+ "Priority = 0x" + Priority.ToString("x8"));
//TODO: NPDM check.
- KThread thread = _process.HandleTable.GetKThread(handle);
+ KThread Thread = Process.HandleTable.GetKThread(Handle);
- if (thread == null)
+ if (Thread == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- thread.SetPriority(priority);
+ Thread.SetPriority(Priority);
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
- private void SvcGetThreadCoreMask(CpuThreadState threadState)
+ private void SvcGetThreadCoreMask(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X2;
+ int Handle = (int)ThreadState.X2;
- Logger.PrintDebug(LogClass.KernelSvc, "Handle = 0x" + handle.ToString("x8"));
+ Logger.PrintDebug(LogClass.KernelSvc, "Handle = 0x" + Handle.ToString("x8"));
- KThread thread = _process.HandleTable.GetKThread(handle);
+ KThread Thread = Process.HandleTable.GetKThread(Handle);
- if (thread != null)
+ if (Thread != null)
{
- threadState.X0 = 0;
- threadState.X1 = (ulong)thread.PreferredCore;
- threadState.X2 = (ulong)thread.AffinityMask;
+ ThreadState.X0 = 0;
+ ThreadState.X1 = (ulong)Thread.PreferredCore;
+ ThreadState.X2 = (ulong)Thread.AffinityMask;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
}
- private void SetThreadCoreMask64(CpuThreadState threadState)
+ private void SetThreadCoreMask64(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
- int preferredCore = (int)threadState.X1;
- long affinityMask = (long)threadState.X2;
+ int Handle = (int)ThreadState.X0;
+ int PreferredCore = (int)ThreadState.X1;
+ long AffinityMask = (long)ThreadState.X2;
Logger.PrintDebug(LogClass.KernelSvc,
- "Handle = 0x" + handle .ToString("x8") + ", " +
- "PreferredCore = 0x" + preferredCore.ToString("x8") + ", " +
- "AffinityMask = 0x" + affinityMask .ToString("x16"));
+ "Handle = 0x" + Handle .ToString("x8") + ", " +
+ "PreferredCore = 0x" + PreferredCore.ToString("x8") + ", " +
+ "AffinityMask = 0x" + AffinityMask .ToString("x16"));
- KernelResult result = SetThreadCoreMask(handle, preferredCore, affinityMask);
+ KernelResult Result = SetThreadCoreMask(Handle, PreferredCore, AffinityMask);
- if (result != KernelResult.Success)
+ if (Result != KernelResult.Success)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{result}\".");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error \"{Result}\".");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private KernelResult SetThreadCoreMask(int handle, int preferredCore, long affinityMask)
+ private KernelResult SetThreadCoreMask(int Handle, int PreferredCore, long AffinityMask)
{
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- if (preferredCore == -2)
+ if (PreferredCore == -2)
{
- preferredCore = currentProcess.DefaultCpuCore;
+ PreferredCore = CurrentProcess.DefaultCpuCore;
- affinityMask = 1 << preferredCore;
+ AffinityMask = 1 << PreferredCore;
}
else
{
- if ((currentProcess.Capabilities.AllowedCpuCoresMask | affinityMask) !=
- currentProcess.Capabilities.AllowedCpuCoresMask)
+ if ((CurrentProcess.Capabilities.AllowedCpuCoresMask | AffinityMask) !=
+ CurrentProcess.Capabilities.AllowedCpuCoresMask)
{
return KernelResult.InvalidCpuCore;
}
- if (affinityMask == 0)
+ if (AffinityMask == 0)
{
return KernelResult.InvalidCombination;
}
- if ((uint)preferredCore > 3)
+ if ((uint)PreferredCore > 3)
{
- if ((preferredCore | 2) != -1)
+ if ((PreferredCore | 2) != -1)
{
return KernelResult.InvalidCpuCore;
}
}
- else if ((affinityMask & (1 << preferredCore)) == 0)
+ else if ((AffinityMask & (1 << PreferredCore)) == 0)
{
return KernelResult.InvalidCombination;
}
}
- KThread thread = _process.HandleTable.GetKThread(handle);
+ KThread Thread = Process.HandleTable.GetKThread(Handle);
- if (thread == null)
+ if (Thread == null)
{
return KernelResult.InvalidHandle;
}
- return thread.SetCoreAndAffinityMask(preferredCore, affinityMask);
+ return Thread.SetCoreAndAffinityMask(PreferredCore, AffinityMask);
}
- private void SvcGetCurrentProcessorNumber(CpuThreadState threadState)
+ private void SvcGetCurrentProcessorNumber(CpuThreadState ThreadState)
{
- threadState.X0 = (ulong)_system.Scheduler.GetCurrentThread().CurrentCore;
+ ThreadState.X0 = (ulong)System.Scheduler.GetCurrentThread().CurrentCore;
}
- private void SvcGetThreadId(CpuThreadState threadState)
+ private void SvcGetThreadId(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X1;
+ int Handle = (int)ThreadState.X1;
- KThread thread = _process.HandleTable.GetKThread(handle);
+ KThread Thread = Process.HandleTable.GetKThread(Handle);
- if (thread != null)
+ if (Thread != null)
{
- threadState.X0 = 0;
- threadState.X1 = (ulong)thread.ThreadUid;
+ ThreadState.X0 = 0;
+ ThreadState.X1 = (ulong)Thread.ThreadUid;
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
}
}
- private void SvcSetThreadActivity(CpuThreadState threadState)
+ private void SvcSetThreadActivity(CpuThreadState ThreadState)
{
- int handle = (int)threadState.X0;
- bool pause = (int)threadState.X1 == 1;
+ int Handle = (int)ThreadState.X0;
+ bool Pause = (int)ThreadState.X1 == 1;
- KThread thread = _process.HandleTable.GetObject<KThread>(handle);
+ KThread Thread = Process.HandleTable.GetObject<KThread>(Handle);
- if (thread == null)
+ if (Thread == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (thread.Owner != _system.Scheduler.GetCurrentProcess())
+ if (Thread.Owner != System.Scheduler.GetCurrentProcess())
{
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread, it belongs to another process.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (thread == _system.Scheduler.GetCurrentThread())
+ if (Thread == System.Scheduler.GetCurrentThread())
{
Logger.PrintWarning(LogClass.KernelSvc, "Invalid thread, current thread is not accepted.");
- threadState.X0 = (ulong)KernelResult.InvalidThread;
+ ThreadState.X0 = (ulong)KernelResult.InvalidThread;
return;
}
- long result = thread.SetActivity(pause);
+ long Result = Thread.SetActivity(Pause);
- if (result != 0)
+ if (Result != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcGetThreadContext3(CpuThreadState threadState)
+ private void SvcGetThreadContext3(CpuThreadState ThreadState)
{
- long position = (long)threadState.X0;
- int handle = (int)threadState.X1;
+ long Position = (long)ThreadState.X0;
+ int Handle = (int)ThreadState.X1;
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
- KThread currentThread = _system.Scheduler.GetCurrentThread();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
+ KThread CurrentThread = System.Scheduler.GetCurrentThread();
- KThread thread = _process.HandleTable.GetObject<KThread>(handle);
+ KThread Thread = Process.HandleTable.GetObject<KThread>(Handle);
- if (thread == null)
+ if (Thread == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{handle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{Handle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (thread.Owner != currentProcess)
+ if (Thread.Owner != CurrentProcess)
{
Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread, it belongs to another process.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- if (currentThread == thread)
+ if (CurrentThread == Thread)
{
Logger.PrintWarning(LogClass.KernelSvc, "Invalid thread, current thread is not accepted.");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidThread);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidThread);
return;
}
- _memory.WriteUInt64(position + 0x0, thread.Context.ThreadState.X0);
- _memory.WriteUInt64(position + 0x8, thread.Context.ThreadState.X1);
- _memory.WriteUInt64(position + 0x10, thread.Context.ThreadState.X2);
- _memory.WriteUInt64(position + 0x18, thread.Context.ThreadState.X3);
- _memory.WriteUInt64(position + 0x20, thread.Context.ThreadState.X4);
- _memory.WriteUInt64(position + 0x28, thread.Context.ThreadState.X5);
- _memory.WriteUInt64(position + 0x30, thread.Context.ThreadState.X6);
- _memory.WriteUInt64(position + 0x38, thread.Context.ThreadState.X7);
- _memory.WriteUInt64(position + 0x40, thread.Context.ThreadState.X8);
- _memory.WriteUInt64(position + 0x48, thread.Context.ThreadState.X9);
- _memory.WriteUInt64(position + 0x50, thread.Context.ThreadState.X10);
- _memory.WriteUInt64(position + 0x58, thread.Context.ThreadState.X11);
- _memory.WriteUInt64(position + 0x60, thread.Context.ThreadState.X12);
- _memory.WriteUInt64(position + 0x68, thread.Context.ThreadState.X13);
- _memory.WriteUInt64(position + 0x70, thread.Context.ThreadState.X14);
- _memory.WriteUInt64(position + 0x78, thread.Context.ThreadState.X15);
- _memory.WriteUInt64(position + 0x80, thread.Context.ThreadState.X16);
- _memory.WriteUInt64(position + 0x88, thread.Context.ThreadState.X17);
- _memory.WriteUInt64(position + 0x90, thread.Context.ThreadState.X18);
- _memory.WriteUInt64(position + 0x98, thread.Context.ThreadState.X19);
- _memory.WriteUInt64(position + 0xa0, thread.Context.ThreadState.X20);
- _memory.WriteUInt64(position + 0xa8, thread.Context.ThreadState.X21);
- _memory.WriteUInt64(position + 0xb0, thread.Context.ThreadState.X22);
- _memory.WriteUInt64(position + 0xb8, thread.Context.ThreadState.X23);
- _memory.WriteUInt64(position + 0xc0, thread.Context.ThreadState.X24);
- _memory.WriteUInt64(position + 0xc8, thread.Context.ThreadState.X25);
- _memory.WriteUInt64(position + 0xd0, thread.Context.ThreadState.X26);
- _memory.WriteUInt64(position + 0xd8, thread.Context.ThreadState.X27);
- _memory.WriteUInt64(position + 0xe0, thread.Context.ThreadState.X28);
- _memory.WriteUInt64(position + 0xe8, thread.Context.ThreadState.X29);
- _memory.WriteUInt64(position + 0xf0, thread.Context.ThreadState.X30);
- _memory.WriteUInt64(position + 0xf8, thread.Context.ThreadState.X31);
-
- _memory.WriteInt64(position + 0x100, thread.LastPc);
-
- _memory.WriteUInt64(position + 0x108, (ulong)thread.Context.ThreadState.Psr);
-
- _memory.WriteVector128(position + 0x110, thread.Context.ThreadState.V0);
- _memory.WriteVector128(position + 0x120, thread.Context.ThreadState.V1);
- _memory.WriteVector128(position + 0x130, thread.Context.ThreadState.V2);
- _memory.WriteVector128(position + 0x140, thread.Context.ThreadState.V3);
- _memory.WriteVector128(position + 0x150, thread.Context.ThreadState.V4);
- _memory.WriteVector128(position + 0x160, thread.Context.ThreadState.V5);
- _memory.WriteVector128(position + 0x170, thread.Context.ThreadState.V6);
- _memory.WriteVector128(position + 0x180, thread.Context.ThreadState.V7);
- _memory.WriteVector128(position + 0x190, thread.Context.ThreadState.V8);
- _memory.WriteVector128(position + 0x1a0, thread.Context.ThreadState.V9);
- _memory.WriteVector128(position + 0x1b0, thread.Context.ThreadState.V10);
- _memory.WriteVector128(position + 0x1c0, thread.Context.ThreadState.V11);
- _memory.WriteVector128(position + 0x1d0, thread.Context.ThreadState.V12);
- _memory.WriteVector128(position + 0x1e0, thread.Context.ThreadState.V13);
- _memory.WriteVector128(position + 0x1f0, thread.Context.ThreadState.V14);
- _memory.WriteVector128(position + 0x200, thread.Context.ThreadState.V15);
- _memory.WriteVector128(position + 0x210, thread.Context.ThreadState.V16);
- _memory.WriteVector128(position + 0x220, thread.Context.ThreadState.V17);
- _memory.WriteVector128(position + 0x230, thread.Context.ThreadState.V18);
- _memory.WriteVector128(position + 0x240, thread.Context.ThreadState.V19);
- _memory.WriteVector128(position + 0x250, thread.Context.ThreadState.V20);
- _memory.WriteVector128(position + 0x260, thread.Context.ThreadState.V21);
- _memory.WriteVector128(position + 0x270, thread.Context.ThreadState.V22);
- _memory.WriteVector128(position + 0x280, thread.Context.ThreadState.V23);
- _memory.WriteVector128(position + 0x290, thread.Context.ThreadState.V24);
- _memory.WriteVector128(position + 0x2a0, thread.Context.ThreadState.V25);
- _memory.WriteVector128(position + 0x2b0, thread.Context.ThreadState.V26);
- _memory.WriteVector128(position + 0x2c0, thread.Context.ThreadState.V27);
- _memory.WriteVector128(position + 0x2d0, thread.Context.ThreadState.V28);
- _memory.WriteVector128(position + 0x2e0, thread.Context.ThreadState.V29);
- _memory.WriteVector128(position + 0x2f0, thread.Context.ThreadState.V30);
- _memory.WriteVector128(position + 0x300, thread.Context.ThreadState.V31);
-
- _memory.WriteInt32(position + 0x310, thread.Context.ThreadState.Fpcr);
- _memory.WriteInt32(position + 0x314, thread.Context.ThreadState.Fpsr);
- _memory.WriteInt64(position + 0x318, thread.Context.ThreadState.Tpidr);
-
- threadState.X0 = 0;
+ Memory.WriteUInt64(Position + 0x0, Thread.Context.ThreadState.X0);
+ Memory.WriteUInt64(Position + 0x8, Thread.Context.ThreadState.X1);
+ Memory.WriteUInt64(Position + 0x10, Thread.Context.ThreadState.X2);
+ Memory.WriteUInt64(Position + 0x18, Thread.Context.ThreadState.X3);
+ Memory.WriteUInt64(Position + 0x20, Thread.Context.ThreadState.X4);
+ Memory.WriteUInt64(Position + 0x28, Thread.Context.ThreadState.X5);
+ Memory.WriteUInt64(Position + 0x30, Thread.Context.ThreadState.X6);
+ Memory.WriteUInt64(Position + 0x38, Thread.Context.ThreadState.X7);
+ Memory.WriteUInt64(Position + 0x40, Thread.Context.ThreadState.X8);
+ Memory.WriteUInt64(Position + 0x48, Thread.Context.ThreadState.X9);
+ Memory.WriteUInt64(Position + 0x50, Thread.Context.ThreadState.X10);
+ Memory.WriteUInt64(Position + 0x58, Thread.Context.ThreadState.X11);
+ Memory.WriteUInt64(Position + 0x60, Thread.Context.ThreadState.X12);
+ Memory.WriteUInt64(Position + 0x68, Thread.Context.ThreadState.X13);
+ Memory.WriteUInt64(Position + 0x70, Thread.Context.ThreadState.X14);
+ Memory.WriteUInt64(Position + 0x78, Thread.Context.ThreadState.X15);
+ Memory.WriteUInt64(Position + 0x80, Thread.Context.ThreadState.X16);
+ Memory.WriteUInt64(Position + 0x88, Thread.Context.ThreadState.X17);
+ Memory.WriteUInt64(Position + 0x90, Thread.Context.ThreadState.X18);
+ Memory.WriteUInt64(Position + 0x98, Thread.Context.ThreadState.X19);
+ Memory.WriteUInt64(Position + 0xa0, Thread.Context.ThreadState.X20);
+ Memory.WriteUInt64(Position + 0xa8, Thread.Context.ThreadState.X21);
+ Memory.WriteUInt64(Position + 0xb0, Thread.Context.ThreadState.X22);
+ Memory.WriteUInt64(Position + 0xb8, Thread.Context.ThreadState.X23);
+ Memory.WriteUInt64(Position + 0xc0, Thread.Context.ThreadState.X24);
+ Memory.WriteUInt64(Position + 0xc8, Thread.Context.ThreadState.X25);
+ Memory.WriteUInt64(Position + 0xd0, Thread.Context.ThreadState.X26);
+ Memory.WriteUInt64(Position + 0xd8, Thread.Context.ThreadState.X27);
+ Memory.WriteUInt64(Position + 0xe0, Thread.Context.ThreadState.X28);
+ Memory.WriteUInt64(Position + 0xe8, Thread.Context.ThreadState.X29);
+ Memory.WriteUInt64(Position + 0xf0, Thread.Context.ThreadState.X30);
+ Memory.WriteUInt64(Position + 0xf8, Thread.Context.ThreadState.X31);
+
+ Memory.WriteInt64(Position + 0x100, Thread.LastPc);
+
+ Memory.WriteUInt64(Position + 0x108, (ulong)Thread.Context.ThreadState.Psr);
+
+ Memory.WriteVector128(Position + 0x110, Thread.Context.ThreadState.V0);
+ Memory.WriteVector128(Position + 0x120, Thread.Context.ThreadState.V1);
+ Memory.WriteVector128(Position + 0x130, Thread.Context.ThreadState.V2);
+ Memory.WriteVector128(Position + 0x140, Thread.Context.ThreadState.V3);
+ Memory.WriteVector128(Position + 0x150, Thread.Context.ThreadState.V4);
+ Memory.WriteVector128(Position + 0x160, Thread.Context.ThreadState.V5);
+ Memory.WriteVector128(Position + 0x170, Thread.Context.ThreadState.V6);
+ Memory.WriteVector128(Position + 0x180, Thread.Context.ThreadState.V7);
+ Memory.WriteVector128(Position + 0x190, Thread.Context.ThreadState.V8);
+ Memory.WriteVector128(Position + 0x1a0, Thread.Context.ThreadState.V9);
+ Memory.WriteVector128(Position + 0x1b0, Thread.Context.ThreadState.V10);
+ Memory.WriteVector128(Position + 0x1c0, Thread.Context.ThreadState.V11);
+ Memory.WriteVector128(Position + 0x1d0, Thread.Context.ThreadState.V12);
+ Memory.WriteVector128(Position + 0x1e0, Thread.Context.ThreadState.V13);
+ Memory.WriteVector128(Position + 0x1f0, Thread.Context.ThreadState.V14);
+ Memory.WriteVector128(Position + 0x200, Thread.Context.ThreadState.V15);
+ Memory.WriteVector128(Position + 0x210, Thread.Context.ThreadState.V16);
+ Memory.WriteVector128(Position + 0x220, Thread.Context.ThreadState.V17);
+ Memory.WriteVector128(Position + 0x230, Thread.Context.ThreadState.V18);
+ Memory.WriteVector128(Position + 0x240, Thread.Context.ThreadState.V19);
+ Memory.WriteVector128(Position + 0x250, Thread.Context.ThreadState.V20);
+ Memory.WriteVector128(Position + 0x260, Thread.Context.ThreadState.V21);
+ Memory.WriteVector128(Position + 0x270, Thread.Context.ThreadState.V22);
+ Memory.WriteVector128(Position + 0x280, Thread.Context.ThreadState.V23);
+ Memory.WriteVector128(Position + 0x290, Thread.Context.ThreadState.V24);
+ Memory.WriteVector128(Position + 0x2a0, Thread.Context.ThreadState.V25);
+ Memory.WriteVector128(Position + 0x2b0, Thread.Context.ThreadState.V26);
+ Memory.WriteVector128(Position + 0x2c0, Thread.Context.ThreadState.V27);
+ Memory.WriteVector128(Position + 0x2d0, Thread.Context.ThreadState.V28);
+ Memory.WriteVector128(Position + 0x2e0, Thread.Context.ThreadState.V29);
+ Memory.WriteVector128(Position + 0x2f0, Thread.Context.ThreadState.V30);
+ Memory.WriteVector128(Position + 0x300, Thread.Context.ThreadState.V31);
+
+ Memory.WriteInt32(Position + 0x310, Thread.Context.ThreadState.Fpcr);
+ Memory.WriteInt32(Position + 0x314, Thread.Context.ThreadState.Fpsr);
+ Memory.WriteInt64(Position + 0x318, Thread.Context.ThreadState.Tpidr);
+
+ ThreadState.X0 = 0;
}
}
} \ No newline at end of file
diff --git a/Ryujinx.HLE/HOS/Kernel/SvcThreadSync.cs b/Ryujinx.HLE/HOS/Kernel/SvcThreadSync.cs
index 11cfffe9..3935df5d 100644
--- a/Ryujinx.HLE/HOS/Kernel/SvcThreadSync.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SvcThreadSync.cs
@@ -8,366 +8,366 @@ namespace Ryujinx.HLE.HOS.Kernel
{
partial class SvcHandler
{
- private void SvcWaitSynchronization(CpuThreadState threadState)
+ private void SvcWaitSynchronization(CpuThreadState ThreadState)
{
- long handlesPtr = (long)threadState.X1;
- int handlesCount = (int)threadState.X2;
- long timeout = (long)threadState.X3;
+ long HandlesPtr = (long)ThreadState.X1;
+ int HandlesCount = (int)ThreadState.X2;
+ long Timeout = (long)ThreadState.X3;
Logger.PrintDebug(LogClass.KernelSvc,
- "HandlesPtr = 0x" + handlesPtr .ToString("x16") + ", " +
- "HandlesCount = 0x" + handlesCount.ToString("x8") + ", " +
- "Timeout = 0x" + timeout .ToString("x16"));
+ "HandlesPtr = 0x" + HandlesPtr .ToString("x16") + ", " +
+ "HandlesCount = 0x" + HandlesCount.ToString("x8") + ", " +
+ "Timeout = 0x" + Timeout .ToString("x16"));
- if ((uint)handlesCount > 0x40)
+ if ((uint)HandlesCount > 0x40)
{
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.CountOutOfRange);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.CountOutOfRange);
return;
}
- List<KSynchronizationObject> syncObjs = new List<KSynchronizationObject>();
+ List<KSynchronizationObject> SyncObjs = new List<KSynchronizationObject>();
- for (int index = 0; index < handlesCount; index++)
+ for (int Index = 0; Index < HandlesCount; Index++)
{
- int handle = _memory.ReadInt32(handlesPtr + index * 4);
+ int Handle = Memory.ReadInt32(HandlesPtr + Index * 4);
- Logger.PrintDebug(LogClass.KernelSvc, $"Sync handle 0x{handle:x8}");
+ Logger.PrintDebug(LogClass.KernelSvc, $"Sync handle 0x{Handle:x8}");
- KSynchronizationObject syncObj = _process.HandleTable.GetObject<KSynchronizationObject>(handle);
+ KSynchronizationObject SyncObj = Process.HandleTable.GetObject<KSynchronizationObject>(Handle);
- if (syncObj == null)
+ if (SyncObj == null)
{
break;
}
- syncObjs.Add(syncObj);
+ SyncObjs.Add(SyncObj);
}
- int hndIndex = (int)threadState.X1;
+ int HndIndex = (int)ThreadState.X1;
- ulong high = threadState.X1 & (0xffffffffUL << 32);
+ ulong High = ThreadState.X1 & (0xffffffffUL << 32);
- long result = _system.Synchronization.WaitFor(syncObjs.ToArray(), timeout, ref hndIndex);
+ long Result = System.Synchronization.WaitFor(SyncObjs.ToArray(), Timeout, ref HndIndex);
- if (result != 0)
+ if (Result != 0)
{
- if (result == MakeError(ErrorModule.Kernel, KernelErr.Timeout) ||
- result == MakeError(ErrorModule.Kernel, KernelErr.Cancelled))
+ if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout) ||
+ Result == MakeError(ErrorModule.Kernel, KernelErr.Cancelled))
{
- Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
}
- threadState.X0 = (ulong)result;
- threadState.X1 = (uint)hndIndex | high;
+ ThreadState.X0 = (ulong)Result;
+ ThreadState.X1 = (uint)HndIndex | High;
}
- private void SvcCancelSynchronization(CpuThreadState threadState)
+ private void SvcCancelSynchronization(CpuThreadState ThreadState)
{
- int threadHandle = (int)threadState.X0;
+ int ThreadHandle = (int)ThreadState.X0;
- Logger.PrintDebug(LogClass.KernelSvc, "ThreadHandle = 0x" + threadHandle.ToString("x8"));
+ Logger.PrintDebug(LogClass.KernelSvc, "ThreadHandle = 0x" + ThreadHandle.ToString("x8"));
- KThread thread = _process.HandleTable.GetKThread(threadHandle);
+ KThread Thread = Process.HandleTable.GetKThread(ThreadHandle);
- if (thread == null)
+ if (Thread == null)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{threadHandle:x8}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid thread handle 0x{ThreadHandle:x8}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidHandle);
return;
}
- thread.CancelSynchronization();
+ Thread.CancelSynchronization();
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
- private void SvcArbitrateLock(CpuThreadState threadState)
+ private void SvcArbitrateLock(CpuThreadState ThreadState)
{
- int ownerHandle = (int)threadState.X0;
- long mutexAddress = (long)threadState.X1;
- int requesterHandle = (int)threadState.X2;
+ int OwnerHandle = (int)ThreadState.X0;
+ long MutexAddress = (long)ThreadState.X1;
+ int RequesterHandle = (int)ThreadState.X2;
Logger.PrintDebug(LogClass.KernelSvc,
- "OwnerHandle = 0x" + ownerHandle .ToString("x8") + ", " +
- "MutexAddress = 0x" + mutexAddress .ToString("x16") + ", " +
- "RequesterHandle = 0x" + requesterHandle.ToString("x8"));
+ "OwnerHandle = 0x" + OwnerHandle .ToString("x8") + ", " +
+ "MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
+ "RequesterHandle = 0x" + RequesterHandle.ToString("x8"));
- if (IsPointingInsideKernel(mutexAddress))
+ if (IsPointingInsideKernel(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (IsAddressNotWordAligned(mutexAddress))
+ if (IsAddressNotWordAligned(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- long result = currentProcess.AddressArbiter.ArbitrateLock(ownerHandle, mutexAddress, requesterHandle);
+ long Result = CurrentProcess.AddressArbiter.ArbitrateLock(OwnerHandle, MutexAddress, RequesterHandle);
- if (result != 0)
+ if (Result != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcArbitrateUnlock(CpuThreadState threadState)
+ private void SvcArbitrateUnlock(CpuThreadState ThreadState)
{
- long mutexAddress = (long)threadState.X0;
+ long MutexAddress = (long)ThreadState.X0;
- Logger.PrintDebug(LogClass.KernelSvc, "MutexAddress = 0x" + mutexAddress.ToString("x16"));
+ Logger.PrintDebug(LogClass.KernelSvc, "MutexAddress = 0x" + MutexAddress.ToString("x16"));
- if (IsPointingInsideKernel(mutexAddress))
+ if (IsPointingInsideKernel(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (IsAddressNotWordAligned(mutexAddress))
+ if (IsAddressNotWordAligned(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- long result = currentProcess.AddressArbiter.ArbitrateUnlock(mutexAddress);
+ long Result = CurrentProcess.AddressArbiter.ArbitrateUnlock(MutexAddress);
- if (result != 0)
+ if (Result != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcWaitProcessWideKeyAtomic(CpuThreadState threadState)
+ private void SvcWaitProcessWideKeyAtomic(CpuThreadState ThreadState)
{
- long mutexAddress = (long)threadState.X0;
- long condVarAddress = (long)threadState.X1;
- int threadHandle = (int)threadState.X2;
- long timeout = (long)threadState.X3;
+ long MutexAddress = (long)ThreadState.X0;
+ long CondVarAddress = (long)ThreadState.X1;
+ int ThreadHandle = (int)ThreadState.X2;
+ long Timeout = (long)ThreadState.X3;
Logger.PrintDebug(LogClass.KernelSvc,
- "MutexAddress = 0x" + mutexAddress .ToString("x16") + ", " +
- "CondVarAddress = 0x" + condVarAddress.ToString("x16") + ", " +
- "ThreadHandle = 0x" + threadHandle .ToString("x8") + ", " +
- "Timeout = 0x" + timeout .ToString("x16"));
+ "MutexAddress = 0x" + MutexAddress .ToString("x16") + ", " +
+ "CondVarAddress = 0x" + CondVarAddress.ToString("x16") + ", " +
+ "ThreadHandle = 0x" + ThreadHandle .ToString("x8") + ", " +
+ "Timeout = 0x" + Timeout .ToString("x16"));
- if (IsPointingInsideKernel(mutexAddress))
+ if (IsPointingInsideKernel(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (IsAddressNotWordAligned(mutexAddress))
+ if (IsAddressNotWordAligned(MutexAddress))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{mutexAddress:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned mutex address 0x{MutexAddress:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- long result = currentProcess.AddressArbiter.WaitProcessWideKeyAtomic(
- mutexAddress,
- condVarAddress,
- threadHandle,
- timeout);
+ long Result = CurrentProcess.AddressArbiter.WaitProcessWideKeyAtomic(
+ MutexAddress,
+ CondVarAddress,
+ ThreadHandle,
+ Timeout);
- if (result != 0)
+ if (Result != 0)
{
- if (result == MakeError(ErrorModule.Kernel, KernelErr.Timeout))
+ if (Result == MakeError(ErrorModule.Kernel, KernelErr.Timeout))
{
- Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintDebug(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
else
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcSignalProcessWideKey(CpuThreadState threadState)
+ private void SvcSignalProcessWideKey(CpuThreadState ThreadState)
{
- long address = (long)threadState.X0;
- int count = (int)threadState.X1;
+ long Address = (long)ThreadState.X0;
+ int Count = (int)ThreadState.X1;
Logger.PrintDebug(LogClass.KernelSvc,
- "Address = 0x" + address.ToString("x16") + ", " +
- "Count = 0x" + count .ToString("x8"));
+ "Address = 0x" + Address.ToString("x16") + ", " +
+ "Count = 0x" + Count .ToString("x8"));
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- currentProcess.AddressArbiter.SignalProcessWideKey(address, count);
+ CurrentProcess.AddressArbiter.SignalProcessWideKey(Address, Count);
- threadState.X0 = 0;
+ ThreadState.X0 = 0;
}
- private void SvcWaitForAddress(CpuThreadState threadState)
+ private void SvcWaitForAddress(CpuThreadState ThreadState)
{
- long address = (long)threadState.X0;
- ArbitrationType type = (ArbitrationType)threadState.X1;
- int value = (int)threadState.X2;
- long timeout = (long)threadState.X3;
+ long Address = (long)ThreadState.X0;
+ ArbitrationType Type = (ArbitrationType)ThreadState.X1;
+ int Value = (int)ThreadState.X2;
+ long Timeout = (long)ThreadState.X3;
Logger.PrintDebug(LogClass.KernelSvc,
- "Address = 0x" + address.ToString("x16") + ", " +
- "Type = " + type .ToString() + ", " +
- "Value = 0x" + value .ToString("x8") + ", " +
- "Timeout = 0x" + timeout.ToString("x16"));
+ "Address = 0x" + Address.ToString("x16") + ", " +
+ "Type = " + Type .ToString() + ", " +
+ "Value = 0x" + Value .ToString("x8") + ", " +
+ "Timeout = 0x" + Timeout.ToString("x16"));
- if (IsPointingInsideKernel(address))
+ if (IsPointingInsideKernel(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{address:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (IsAddressNotWordAligned(address))
+ if (IsAddressNotWordAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{address:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- long result;
+ long Result;
- switch (type)
+ switch (Type)
{
case ArbitrationType.WaitIfLessThan:
- result = currentProcess.AddressArbiter.WaitForAddressIfLessThan(address, value, false, timeout);
+ Result = CurrentProcess.AddressArbiter.WaitForAddressIfLessThan(Address, Value, false, Timeout);
break;
case ArbitrationType.DecrementAndWaitIfLessThan:
- result = currentProcess.AddressArbiter.WaitForAddressIfLessThan(address, value, true, timeout);
+ Result = CurrentProcess.AddressArbiter.WaitForAddressIfLessThan(Address, Value, true, Timeout);
break;
case ArbitrationType.WaitIfEqual:
- result = currentProcess.AddressArbiter.WaitForAddressIfEqual(address, value, timeout);
+ Result = CurrentProcess.AddressArbiter.WaitForAddressIfEqual(Address, Value, Timeout);
break;
default:
- result = MakeError(ErrorModule.Kernel, KernelErr.InvalidEnumValue);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.InvalidEnumValue);
break;
}
- if (result != 0)
+ if (Result != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private void SvcSignalToAddress(CpuThreadState threadState)
+ private void SvcSignalToAddress(CpuThreadState ThreadState)
{
- long address = (long)threadState.X0;
- SignalType type = (SignalType)threadState.X1;
- int value = (int)threadState.X2;
- int count = (int)threadState.X3;
+ long Address = (long)ThreadState.X0;
+ SignalType Type = (SignalType)ThreadState.X1;
+ int Value = (int)ThreadState.X2;
+ int Count = (int)ThreadState.X3;
Logger.PrintDebug(LogClass.KernelSvc,
- "Address = 0x" + address.ToString("x16") + ", " +
- "Type = " + type .ToString() + ", " +
- "Value = 0x" + value .ToString("x8") + ", " +
- "Count = 0x" + count .ToString("x8"));
+ "Address = 0x" + Address.ToString("x16") + ", " +
+ "Type = " + Type .ToString() + ", " +
+ "Value = 0x" + Value .ToString("x8") + ", " +
+ "Count = 0x" + Count .ToString("x8"));
- if (IsPointingInsideKernel(address))
+ if (IsPointingInsideKernel(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{address:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Invalid address 0x{Address:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.NoAccessPerm);
return;
}
- if (IsAddressNotWordAligned(address))
+ if (IsAddressNotWordAligned(Address))
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{address:x16}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Unaligned address 0x{Address:x16}!");
- threadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
+ ThreadState.X0 = MakeError(ErrorModule.Kernel, KernelErr.InvalidAddress);
return;
}
- KProcess currentProcess = _system.Scheduler.GetCurrentProcess();
+ KProcess CurrentProcess = System.Scheduler.GetCurrentProcess();
- long result;
+ long Result;
- switch (type)
+ switch (Type)
{
case SignalType.Signal:
- result = currentProcess.AddressArbiter.Signal(address, count);
+ Result = CurrentProcess.AddressArbiter.Signal(Address, Count);
break;
case SignalType.SignalAndIncrementIfEqual:
- result = currentProcess.AddressArbiter.SignalAndIncrementIfEqual(address, value, count);
+ Result = CurrentProcess.AddressArbiter.SignalAndIncrementIfEqual(Address, Value, Count);
break;
case SignalType.SignalAndModifyIfEqual:
- result = currentProcess.AddressArbiter.SignalAndModifyIfEqual(address, value, count);
+ Result = CurrentProcess.AddressArbiter.SignalAndModifyIfEqual(Address, Value, Count);
break;
default:
- result = MakeError(ErrorModule.Kernel, KernelErr.InvalidEnumValue);
+ Result = MakeError(ErrorModule.Kernel, KernelErr.InvalidEnumValue);
break;
}
- if (result != 0)
+ if (Result != 0)
{
- Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{result:x}!");
+ Logger.PrintWarning(LogClass.KernelSvc, $"Operation failed with error 0x{Result:x}!");
}
- threadState.X0 = (ulong)result;
+ ThreadState.X0 = (ulong)Result;
}
- private bool IsPointingInsideKernel(long address)
+ private bool IsPointingInsideKernel(long Address)
{
- return ((ulong)address + 0x1000000000) < 0xffffff000;
+ return ((ulong)Address + 0x1000000000) < 0xffffff000;
}
- private bool IsAddressNotWordAligned(long address)
+ private bool IsAddressNotWordAligned(long Address)
{
- return (address & 3) != 0;
+ return (Address & 3) != 0;
}
}
} \ No newline at end of file