aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs
diff options
context:
space:
mode:
authorTSR Berry <20988865+TSRBerry@users.noreply.github.com>2023-04-08 01:22:00 +0200
committerMary <thog@protonmail.com>2023-04-27 23:51:14 +0200
commitcee712105850ac3385cd0091a923438167433f9f (patch)
tree4a5274b21d8b7f938c0d0ce18736d3f2993b11b1 /Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs
parentcd124bda587ef09668a971fa1cac1c3f0cfc9f21 (diff)
Move solution and projects to src
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs70
1 files changed, 0 insertions, 70 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs b/Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs
deleted file mode 100644
index 891e632f..00000000
--- a/Ryujinx.HLE/HOS/Kernel/Threading/KConditionVariable.cs
+++ /dev/null
@@ -1,70 +0,0 @@
-using System.Collections.Generic;
-using System.Threading;
-
-namespace Ryujinx.HLE.HOS.Kernel.Threading
-{
- static class KConditionVariable
- {
- public static void Wait(KernelContext context, LinkedList<KThread> threadList, object mutex, long timeout)
- {
- KThread currentThread = KernelStatic.GetCurrentThread();
-
- context.CriticalSection.Enter();
-
- Monitor.Exit(mutex);
-
- currentThread.Withholder = threadList;
-
- currentThread.Reschedule(ThreadSchedState.Paused);
-
- currentThread.WithholderNode = threadList.AddLast(currentThread);
-
- if (currentThread.TerminationRequested)
- {
- threadList.Remove(currentThread.WithholderNode);
-
- currentThread.Reschedule(ThreadSchedState.Running);
-
- currentThread.Withholder = null;
-
- context.CriticalSection.Leave();
- }
- else
- {
- if (timeout > 0)
- {
- context.TimeManager.ScheduleFutureInvocation(currentThread, timeout);
- }
-
- context.CriticalSection.Leave();
-
- if (timeout > 0)
- {
- context.TimeManager.UnscheduleFutureInvocation(currentThread);
- }
- }
-
- Monitor.Enter(mutex);
- }
-
- public static void NotifyAll(KernelContext context, LinkedList<KThread> threadList)
- {
- context.CriticalSection.Enter();
-
- LinkedListNode<KThread> node = threadList.First;
-
- for (; node != null; node = threadList.First)
- {
- KThread thread = node.Value;
-
- threadList.Remove(thread.WithholderNode);
-
- thread.Withholder = null;
-
- thread.Reschedule(ThreadSchedState.Running);
- }
-
- context.CriticalSection.Leave();
- }
- }
-} \ No newline at end of file