Misc cleanup (#708)
* Fix typos * Remove unneeded using statements * Enforce var style more * Remove redundant qualifiers * Fix some indentation * Disable naming warnings on files with external enum names * Fix build * Mass find & replace for comments with no spacing * Standardize todo capitalization and for/if spacing
This commit is contained in:
parent
10c74182ba
commit
b2b736abc2
205 changed files with 1020 additions and 1041 deletions
|
@ -68,8 +68,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
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 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())
|
||||
{
|
||||
currentThread.Context.RequestInterrupt();
|
||||
|
@ -80,8 +80,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
CoreManager.Reset(currentThread.Context.Work);
|
||||
}
|
||||
|
||||
//Advance current core and try picking a thread,
|
||||
//keep advancing if it is null.
|
||||
// Advance current core and try picking a thread,
|
||||
// keep advancing if it is null.
|
||||
for (int core = 0; core < 4; core++)
|
||||
{
|
||||
_currentCore = (_currentCore + 1) % CpuCoresCount;
|
||||
|
@ -100,8 +100,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//If nothing was running before, then we are on a "external"
|
||||
//HLE thread, we don't need to wait.
|
||||
// If nothing was running before, then we are on a "external"
|
||||
// HLE thread, we don't need to wait.
|
||||
if (!hasThreadExecuting)
|
||||
{
|
||||
return;
|
||||
|
@ -114,9 +114,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
private void PreemptCurrentThread()
|
||||
{
|
||||
//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.
|
||||
// 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)
|
||||
{
|
||||
lock (CoreContexts)
|
||||
|
|
|
@ -207,7 +207,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
signaledThreads.Enqueue(thread);
|
||||
|
||||
//If the count is <= 0, we should signal all threads waiting.
|
||||
// If the count is <= 0, we should signal all threads waiting.
|
||||
if (count >= 1 && --count == 0)
|
||||
{
|
||||
break;
|
||||
|
@ -234,7 +234,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
{
|
||||
if (!KernelTransfer.UserToKernelInt32(_system, address, out mutexValue))
|
||||
{
|
||||
//Invalid address.
|
||||
// Invalid address.
|
||||
requester.SignaledObj = null;
|
||||
requester.ObjSyncResult = KernelResult.InvalidMemState;
|
||||
|
||||
|
@ -243,12 +243,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (mutexValue != 0)
|
||||
{
|
||||
//Update value to indicate there is a mutex waiter now.
|
||||
// Update value to indicate there is a mutex waiter now.
|
||||
newMutexValue = mutexValue | HasListenersMask;
|
||||
}
|
||||
else
|
||||
{
|
||||
//No thread owning the mutex, assign to requesting thread.
|
||||
// No thread owning the mutex, assign to requesting thread.
|
||||
newMutexValue = requester.ThreadHandleForUserMutex;
|
||||
}
|
||||
}
|
||||
|
@ -256,7 +256,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (mutexValue == 0)
|
||||
{
|
||||
//We now own the mutex.
|
||||
// We now own the mutex.
|
||||
requester.SignaledObj = null;
|
||||
requester.ObjSyncResult = KernelResult.Success;
|
||||
|
||||
|
@ -271,12 +271,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (mutexOwner != null)
|
||||
{
|
||||
//Mutex already belongs to another thread, wait for it.
|
||||
// Mutex already belongs to another thread, wait for it.
|
||||
mutexOwner.AddMutexWaiter(requester);
|
||||
}
|
||||
else
|
||||
{
|
||||
//Invalid mutex owner.
|
||||
// Invalid mutex owner.
|
||||
requester.SignaledObj = null;
|
||||
requester.ObjSyncResult = KernelResult.InvalidHandle;
|
||||
|
||||
|
@ -513,9 +513,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
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.
|
||||
// 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;
|
||||
|
||||
foreach (KThread thread in ArbiterThreads.Where(x => x.MutexAddress == address))
|
||||
|
@ -572,7 +572,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
{
|
||||
signaledThreads.Enqueue(thread);
|
||||
|
||||
//If the count is <= 0, we should signal all threads waiting.
|
||||
// If the count is <= 0, we should signal all threads waiting.
|
||||
if (count >= 1 && --count == 0)
|
||||
{
|
||||
break;
|
||||
|
|
|
@ -57,17 +57,17 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (currentHleThread == null)
|
||||
{
|
||||
//Nothing is running, we can perform the context switch immediately.
|
||||
// Nothing is running, we can perform the context switch immediately.
|
||||
coreContext.ContextSwitch();
|
||||
}
|
||||
else if (currentHleThread.IsCurrentThread())
|
||||
{
|
||||
//Thread running on the current core, context switch will block.
|
||||
// Thread running on the current core, context switch will block.
|
||||
doContextSwitch = true;
|
||||
}
|
||||
else
|
||||
{
|
||||
//Thread running on another core, request a interrupt.
|
||||
// Thread running on another core, request a interrupt.
|
||||
currentHleThread.RequestInterrupt();
|
||||
}
|
||||
}
|
||||
|
|
|
@ -55,7 +55,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
KThread selectedThread = scheduledThreads.FirstOrDefault(x => x.DynamicPriority == prio);
|
||||
|
||||
//Yield priority queue.
|
||||
// Yield priority queue.
|
||||
if (selectedThread != null)
|
||||
{
|
||||
SchedulingData.Reschedule(prio, core, selectedThread);
|
||||
|
@ -82,7 +82,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//If the candidate was scheduled after the current thread, then it's not worth it.
|
||||
// If the candidate was scheduled after the current thread, then it's not worth it.
|
||||
if (selectedThread == null || selectedThread.LastScheduledTime >= thread.LastScheduledTime)
|
||||
{
|
||||
yield return thread;
|
||||
|
@ -90,8 +90,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//Select candidate threads that could run on this core.
|
||||
//Only take into account threads that are not yet selected.
|
||||
// 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);
|
||||
|
||||
if (dst != null)
|
||||
|
@ -101,8 +101,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
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 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)
|
||||
{
|
||||
Func<KThread, bool> predicate = x => x.DynamicPriority >= selectedThread.DynamicPriority;
|
||||
|
@ -131,8 +131,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
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 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())
|
||||
{
|
||||
continue;
|
||||
|
@ -144,8 +144,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
KThread dst = null;
|
||||
|
||||
//Select candidate threads that could run on this core.
|
||||
//Give preference to threads that are not yet selected.
|
||||
// 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))
|
||||
{
|
||||
if (thread.CurrentCore < 0 || thread != CoreContexts[thread.CurrentCore].SelectedThread)
|
||||
|
@ -158,11 +158,11 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
srcCoresHighestPrioThreads[srcCoresHighestPrioThreadsCount++] = thread.CurrentCore;
|
||||
}
|
||||
|
||||
//Not yet selected candidate found.
|
||||
// Not yet selected candidate found.
|
||||
if (dst != null)
|
||||
{
|
||||
//Priorities < 2 are used for the kernel message dispatching
|
||||
//threads, we should skip load balancing entirely.
|
||||
// Priorities < 2 are used for the kernel message dispatching
|
||||
// threads, we should skip load balancing entirely.
|
||||
if (dst.DynamicPriority >= 2)
|
||||
{
|
||||
SchedulingData.TransferToCore(dst.DynamicPriority, core, dst);
|
||||
|
@ -173,8 +173,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
continue;
|
||||
}
|
||||
|
||||
//All candiates are already selected, choose the best one
|
||||
//(the first one that doesn't make the source core idle if moved).
|
||||
// All candidates 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++)
|
||||
{
|
||||
int srcCore = srcCoresHighestPrioThreads[index];
|
||||
|
@ -183,8 +183,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (src != null)
|
||||
{
|
||||
//Run the second thread on the queue on the source core,
|
||||
//move the first one to the current core.
|
||||
// Run the second thread on the queue on the source core,
|
||||
// move the first one to the current core.
|
||||
KThread origSelectedCoreSrc = CoreContexts[srcCore].SelectedThread;
|
||||
|
||||
CoreContexts[srcCore].SelectThread(src);
|
||||
|
|
|
@ -20,7 +20,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
_system.CriticalSection.Enter();
|
||||
|
||||
//Check if objects are already signaled before waiting.
|
||||
// Check if objects are already signaled before waiting.
|
||||
for (int index = 0; index < syncObjs.Length; index++)
|
||||
{
|
||||
if (!syncObjs[index].IsSignaled())
|
||||
|
|
|
@ -276,7 +276,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
public void Exit()
|
||||
{
|
||||
//TODO: Debug event.
|
||||
// TODO: Debug event.
|
||||
|
||||
if (Owner != null)
|
||||
{
|
||||
|
@ -352,7 +352,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (DynamicPriority < KScheduler.PrioritiesCount)
|
||||
{
|
||||
//Move current thread to the end of the queue.
|
||||
// Move current thread to the end of the queue.
|
||||
_schedulingData.Reschedule(DynamicPriority, CurrentCore, this);
|
||||
}
|
||||
|
||||
|
@ -383,7 +383,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (DynamicPriority < KScheduler.PrioritiesCount)
|
||||
{
|
||||
//Move current thread to the end of the queue.
|
||||
// Move current thread to the end of the queue.
|
||||
_schedulingData.Reschedule(prio, core, this);
|
||||
|
||||
Func<KThread, bool> predicate = x => x.DynamicPriority == prio;
|
||||
|
@ -407,8 +407,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//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 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)
|
||||
{
|
||||
|
@ -524,7 +524,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
{
|
||||
if (pause)
|
||||
{
|
||||
//Pause, the force pause flag should be clear (thread is NOT paused).
|
||||
// Pause, the force pause flag should be clear (thread is NOT paused).
|
||||
if ((_forcePauseFlags & ThreadSchedState.ThreadPauseFlag) == 0)
|
||||
{
|
||||
_forcePauseFlags |= ThreadSchedState.ThreadPauseFlag;
|
||||
|
@ -538,7 +538,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
else
|
||||
{
|
||||
//Unpause, the force pause flag should be set (thread is paused).
|
||||
// Unpause, the force pause flag should be set (thread is paused).
|
||||
if ((_forcePauseFlags & ThreadSchedState.ThreadPauseFlag) != 0)
|
||||
{
|
||||
ThreadSchedState oldForcePauseFlags = _forcePauseFlags;
|
||||
|
@ -604,7 +604,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
bool useOverride = _affinityOverrideCount != 0;
|
||||
|
||||
//The value -3 is "do not change the preferred core".
|
||||
// The value -3 is "do not change the preferred core".
|
||||
if (newCore == -3)
|
||||
{
|
||||
newCore = useOverride ? _preferredCoreOverride : PreferredCore;
|
||||
|
@ -766,7 +766,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
do
|
||||
{
|
||||
//Skip all threads that are not waiting for this mutex.
|
||||
// Skip all threads that are not waiting for this mutex.
|
||||
while (currentNode != null && currentNode.Value.MutexAddress != mutexAddress)
|
||||
{
|
||||
currentNode = currentNode.Next;
|
||||
|
@ -785,12 +785,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (newMutexOwner != null)
|
||||
{
|
||||
//New owner was already selected, re-insert on new owner list.
|
||||
// New owner was already selected, re-insert on new owner list.
|
||||
newMutexOwner.AddToMutexWaitersList(currentNode.Value);
|
||||
}
|
||||
else
|
||||
{
|
||||
//New owner not selected yet, use current thread.
|
||||
// New owner not selected yet, use current thread.
|
||||
newMutexOwner = currentNode.Value;
|
||||
}
|
||||
|
||||
|
@ -812,9 +812,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
private void UpdatePriorityInheritance()
|
||||
{
|
||||
//If any of the threads waiting for the mutex has
|
||||
//higher priority than the current thread, then
|
||||
//the current thread inherits that priority.
|
||||
// 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;
|
||||
|
||||
if (_mutexWaiters.First != null)
|
||||
|
@ -837,7 +837,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (MutexOwner != null)
|
||||
{
|
||||
//Remove and re-insert to ensure proper sorting based on new priority.
|
||||
// Remove and re-insert to ensure proper sorting based on new priority.
|
||||
MutexOwner._mutexWaiters.Remove(_mutexWaiterNode);
|
||||
|
||||
MutexOwner.AddToMutexWaitersList(this);
|
||||
|
@ -877,7 +877,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
if (oldFlags == ThreadSchedState.Running)
|
||||
{
|
||||
//Was running, now it's stopped.
|
||||
// Was running, now it's stopped.
|
||||
if (CurrentCore >= 0)
|
||||
{
|
||||
_schedulingData.Unschedule(DynamicPriority, CurrentCore, this);
|
||||
|
@ -893,7 +893,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
else if (SchedFlags == ThreadSchedState.Running)
|
||||
{
|
||||
//Was stopped, now it's running.
|
||||
// Was stopped, now it's running.
|
||||
if (CurrentCore >= 0)
|
||||
{
|
||||
_schedulingData.Schedule(DynamicPriority, CurrentCore, this);
|
||||
|
@ -918,7 +918,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
return;
|
||||
}
|
||||
|
||||
//Remove thread from the old priority queues.
|
||||
// Remove thread from the old priority queues.
|
||||
if (CurrentCore >= 0)
|
||||
{
|
||||
_schedulingData.Unschedule(oldPriority, CurrentCore, this);
|
||||
|
@ -932,7 +932,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//Add thread to the new priority queues.
|
||||
// Add thread to the new priority queues.
|
||||
KThread currentThread = _scheduler.GetCurrentThread();
|
||||
|
||||
if (CurrentCore >= 0)
|
||||
|
@ -965,7 +965,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
return;
|
||||
}
|
||||
|
||||
//Remove thread from the old priority queues.
|
||||
// Remove thread from the old priority queues.
|
||||
for (int core = 0; core < KScheduler.CpuCoresCount; core++)
|
||||
{
|
||||
if (((oldAffinityMask >> core) & 1) != 0)
|
||||
|
@ -981,7 +981,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
}
|
||||
}
|
||||
|
||||
//Add thread to the new priority queues.
|
||||
// Add thread to the new priority queues.
|
||||
for (int core = 0; core < KScheduler.CpuCoresCount; core++)
|
||||
{
|
||||
if (((AffinityMask >> core) & 1) != 0)
|
||||
|
@ -1069,7 +1069,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading
|
|||
|
||||
System.CriticalSection.Enter();
|
||||
|
||||
//Wake up all threads that may be waiting for a mutex being held by this thread.
|
||||
// Wake up all threads that may be waiting for a mutex being held by this thread.
|
||||
foreach (KThread thread in _mutexWaiters)
|
||||
{
|
||||
thread.MutexOwner = null;
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue