Rewrite scheduler context switch code (#1786)
* Rewrite scheduler context switch code * Fix race in UnmapIpcRestorePermission * Fix thread exit issue that could leave the scheduler in a invalid state * Change context switch method to not wait on guest thread, remove spin wait, use SignalAndWait to pass control * Remove multi-core setting (it is always on now) * Re-enable assert * Remove multicore from default config and schema * Fix race in KTimeManager
This commit is contained in:
parent
3484265d37
commit
48278905d1
37 changed files with 1080 additions and 1160 deletions
|
@ -214,7 +214,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
|
|||
|
||||
public KernelResult Receive(ulong customCmdBuffAddr = 0, ulong customCmdBuffSize = 0)
|
||||
{
|
||||
KThread serverThread = KernelContext.Scheduler.GetCurrentThread();
|
||||
KThread serverThread = KernelStatic.GetCurrentThread();
|
||||
KProcess serverProcess = serverThread.Owner;
|
||||
|
||||
KernelContext.CriticalSection.Enter();
|
||||
|
@ -594,7 +594,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
|
|||
|
||||
public KernelResult Reply(ulong customCmdBuffAddr = 0, ulong customCmdBuffSize = 0)
|
||||
{
|
||||
KThread serverThread = KernelContext.Scheduler.GetCurrentThread();
|
||||
KThread serverThread = KernelStatic.GetCurrentThread();
|
||||
KProcess serverProcess = serverThread.Owner;
|
||||
|
||||
KernelContext.CriticalSection.Enter();
|
||||
|
@ -889,7 +889,7 @@ namespace Ryujinx.HLE.HOS.Kernel.Ipc
|
|||
|
||||
private MessageHeader GetServerMessageHeader(Message serverMsg)
|
||||
{
|
||||
KProcess currentProcess = KernelContext.Scheduler.GetCurrentProcess();
|
||||
KProcess currentProcess = KernelStatic.GetCurrentProcess();
|
||||
|
||||
uint word0 = currentProcess.CpuMemory.Read<uint>(serverMsg.Address + 0);
|
||||
uint word1 = currentProcess.CpuMemory.Read<uint>(serverMsg.Address + 4);
|
||||
|
|
Loading…
Add table
Add a link
Reference in a new issue