/ src / Ryujinx.HLE / HOS / Kernel / Common / KSynchronizationObject.cs
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  }