KSynchronizationObject.cs 874 B

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