Improve kernel WaitSynchronization syscall implementation (#1362)
This commit is contained in:
parent
88619d71b8
commit
20774dab14
4 changed files with 81 additions and 16 deletions
|
@ -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>();
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue