From 20774dab14ca8362e716ce87f975be7ea77beead Mon Sep 17 00:00:00 2001 From: gdkchan <gab.dark.100@gmail.com> Date: Fri, 17 Jul 2020 01:22:13 -0300 Subject: Improve kernel WaitSynchronization syscall implementation (#1362) --- Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs | 8 ++++++++ 1 file changed, 8 insertions(+) (limited to 'Ryujinx.HLE/HOS/Kernel/Threading/KThread.cs') 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>(); -- cgit v1.2.3-70-g09d2