Thread scheduler rewrite (#393)

* Started to rewrite the thread scheduler

* Add a single core-like scheduling mode, enabled by default

* Clear exclusive monitor on context switch

* Add SetThreadActivity, misc fixes

* Implement WaitForAddress and SignalToAddress svcs, misc fixes

* Misc fixes (on SetActivity and Arbiter), other tweaks

* Rebased

* Add missing null check

* Rename multicore key on config, fix UpdatePriorityInheritance

* Make scheduling data MLQs private

* nit: Ordering
This commit is contained in:
gdkchan
2018-09-18 20:36:43 -03:00
committed by GitHub
parent 33e2810ef3
commit b8133c1997
57 changed files with 3262 additions and 1540 deletions

View File

@ -12,7 +12,7 @@ using System.Collections.Generic;
namespace Ryujinx.HLE.HOS.Services.Nv
{
class INvDrvServices : IpcService, IDisposable
class INvDrvServices : IpcService
{
private delegate int IoctlProcessor(ServiceCtx Context, int Cmd);
@ -34,7 +34,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
private KEvent Event;
public INvDrvServices()
public INvDrvServices(Horizon System)
{
m_Commands = new Dictionary<int, ServiceProcessRequest>()
{
@ -48,7 +48,7 @@ namespace Ryujinx.HLE.HOS.Services.Nv
{ 13, FinishInitialize }
};
Event = new KEvent();
Event = new KEvent(System);
}
static INvDrvServices()
@ -214,18 +214,5 @@ namespace Ryujinx.HLE.HOS.Services.Nv
NvMapIoctl.UnloadProcess(Process);
}
public void Dispose()
{
Dispose(true);
}
protected virtual void Dispose(bool Disposing)
{
if (Disposing)
{
Event.Dispose();
}
}
}
}