aboutsummaryrefslogtreecommitdiff
path: root/Ryujinx.HLE/HOS/Kernel
diff options
context:
space:
mode:
authorgdkchan <gab.dark.100@gmail.com>2022-06-11 14:58:30 -0300
committerGitHub <noreply@github.com>2022-06-11 14:58:30 -0300
commit70895bdb04c51e92b4d84946c66c122f9d54a73f (patch)
treee0dfa460afe48ce343ae94ab66125f4a0b7de5b4 /Ryujinx.HLE/HOS/Kernel
parent830cbf91bb8766e6347291bdff765a8a4e8c95b8 (diff)
Allow concurrent BSD EventFd read/write (#3385)
Diffstat (limited to 'Ryujinx.HLE/HOS/Kernel')
-rw-r--r--Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs5
-rw-r--r--Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs15
2 files changed, 17 insertions, 3 deletions
diff --git a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
index 0caeacad..d01c3e3b 100644
--- a/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
+++ b/Ryujinx.HLE/HOS/Kernel/Process/KProcess.cs
@@ -735,11 +735,12 @@ namespace Ryujinx.HLE.HOS.Kernel.Process
ulong argsPtr,
ulong stackTop,
int priority,
- int cpuCore)
+ int cpuCore,
+ ThreadStart customThreadStart = null)
{
lock (_processLock)
{
- return thread.Initialize(entrypoint, argsPtr, stackTop, priority, cpuCore, this, ThreadType.User, null);
+ return thread.Initialize(entrypoint, argsPtr, stackTop, priority, cpuCore, this, ThreadType.User, customThreadStart);
}
}
diff --git a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
index 179c7d4b..189e4a3e 100644
--- a/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
+++ b/Ryujinx.HLE/HOS/Kernel/SupervisorCall/Syscall.cs
@@ -2351,6 +2351,18 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
int priority,
int cpuCore)
{
+ return CreateThread(out handle, entrypoint, argsPtr, stackTop, priority, cpuCore, null);
+ }
+
+ public KernelResult CreateThread(
+ out int handle,
+ ulong entrypoint,
+ ulong argsPtr,
+ ulong stackTop,
+ int priority,
+ int cpuCore,
+ ThreadStart customThreadStart)
+ {
handle = 0;
KProcess currentProcess = KernelStatic.GetCurrentProcess();
@@ -2386,7 +2398,8 @@ namespace Ryujinx.HLE.HOS.Kernel.SupervisorCall
argsPtr,
stackTop,
priority,
- cpuCore);
+ cpuCore,
+ customThreadStart);
if (result == KernelResult.Success)
{