diff options
author | gdkchan <gab.dark.100@gmail.com> | 2020-07-17 01:22:13 -0300 |
---|---|---|
committer | GitHub <noreply@github.com> | 2020-07-17 14:22:13 +1000 |
commit | 20774dab14ca8362e716ce87f975be7ea77beead (patch) | |
tree | c2d3c7b6abd154648d414d1e01ebf1684efc054c /Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs | |
parent | 88619d71b8e4840218c68b712aa184098d2dbccf (diff) |
Improve kernel WaitSynchronization syscall implementation (#1362)
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs')
-rw-r--r-- | Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs | 8 |
1 files changed, 8 insertions, 0 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs b/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs index 754a1e53..d4603178 100644 --- a/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs +++ b/Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs @@ -12,6 +12,8 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading { class KThread : KSynchronizationObject, IKFutureSchedulerObject { + public const int MaxWaitSyncObjects = 64; + private int _hostThreadRunning; public Thread HostThread { get; private set; } @@ -39,6 +41,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading public ulong TlsAddress => _tlsAddress; public ulong TlsDramAddress { get; private set; } + public KSynchronizationObject[] WaitSyncObjects { get; } + public int[] WaitSyncHandles { get; } + public long LastScheduledTime { get; set; } public LinkedListNode<KThread>[] SiblingsPerCore { get; private set; } @@ -96,6 +101,9 @@ namespace Ryujinx.HLE.HOS.Kernel.Threading _scheduler = KernelContext.Scheduler; _schedulingData = KernelContext.Scheduler.SchedulingData; + WaitSyncObjects = new KSynchronizationObject[MaxWaitSyncObjects]; + WaitSyncHandles = new int[MaxWaitSyncObjects]; + SiblingsPerCore = new LinkedListNode<KThread>[KScheduler.CpuCoresCount]; _mutexWaiters = new LinkedList<KThread>(); |