KSynchronizationObject.cs
1 using Ryujinx.HLE.HOS.Kernel.Threading; 2 using System.Collections.Generic; 3 4 namespace Ryujinx.HLE.HOS.Kernel.Common 5 { 6 class KSynchronizationObject : KAutoObject 7 { 8 public LinkedList<KThread> WaitingThreads { get; } 9 10 public KSynchronizationObject(KernelContext context) : base(context) 11 { 12 WaitingThreads = new LinkedList<KThread>(); 13 } 14 15 public LinkedListNode<KThread> AddWaitingThread(KThread thread) 16 { 17 return WaitingThreads.AddLast(thread); 18 } 19 20 public void RemoveWaitingThread(LinkedListNode<KThread> node) 21 { 22 WaitingThreads.Remove(node); 23 } 24 25 public virtual void Signal() 26 { 27 KernelContext.Synchronization.SignalObject(this); 28 } 29 30 public virtual bool IsSignaled() 31 { 32 return false; 33 } 34 } 35 }