aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--Ryujinx.HLE/HOS/Horizon.cs2
-rw-r--r--Ryujinx.HLE/HOS/Services/ServerBase.cs26
-rw-r--r--Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs5
3 files changed, 7 insertions, 26 deletions
diff --git a/Ryujinx.HLE/HOS/Horizon.cs b/Ryujinx.HLE/HOS/Horizon.cs
index 2e64542e..b93ebc03 100644
--- a/Ryujinx.HLE/HOS/Horizon.cs
+++ b/Ryujinx.HLE/HOS/Horizon.cs
@@ -309,7 +309,7 @@ namespace Ryujinx.HLE.HOS
// only then doing connections to SM is safe.
SmServer.InitDone.WaitOne();
- BsdServer = new ServerBase(KernelContext, "BsdServer", null, 2);
+ BsdServer = new ServerBase(KernelContext, "BsdServer");
AudRenServer = new ServerBase(KernelContext, "AudioRendererServer");
AudOutServer = new ServerBase(KernelContext, "AudioOutServer");
FsServer = new ServerBase(KernelContext, "FsServer");
diff --git a/Ryujinx.HLE/HOS/Services/ServerBase.cs b/Ryujinx.HLE/HOS/Services/ServerBase.cs
index 2aead42e..c13ee186 100644
--- a/Ryujinx.HLE/HOS/Services/ServerBase.cs
+++ b/Ryujinx.HLE/HOS/Services/ServerBase.cs
@@ -42,15 +42,12 @@ namespace Ryujinx.HLE.HOS.Services
public string Name { get; }
public Func<IpcService> SmObjectFactory { get; }
- private int _threadCount;
-
- public ServerBase(KernelContext context, string name, Func<IpcService> smObjectFactory = null, int threadCount = 1)
+ public ServerBase(KernelContext context, string name, Func<IpcService> smObjectFactory = null)
{
InitDone = new ManualResetEvent(false);
_context = context;
Name = name;
SmObjectFactory = smObjectFactory;
- _threadCount = threadCount;
const ProcessCreationFlags flags =
ProcessCreationFlags.EnableAslr |
@@ -86,27 +83,6 @@ namespace Ryujinx.HLE.HOS.Services
private void Main()
{
- for (int i = 1; i < _threadCount; i++)
- {
- KernelResult result = _context.Syscall.CreateThread(out int threadHandle, 0UL, 0UL, 0UL, 44, 3, ServerLoop);
-
- if (result == KernelResult.Success)
- {
- result = _context.Syscall.StartThread(threadHandle);
-
- if (result != KernelResult.Success)
- {
- Logger.Error?.Print(LogClass.Service, $"Failed to start thread on {Name}: {result}");
- }
-
- _context.Syscall.CloseHandle(threadHandle);
- }
- else
- {
- Logger.Error?.Print(LogClass.Service, $"Failed to create thread on {Name}: {result}");
- }
- }
-
ServerLoop();
}
diff --git a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs b/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
index ea63e842..239e2434 100644
--- a/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
+++ b/Ryujinx.HLE/HOS/Services/Sockets/Bsd/Impl/EventFileDescriptor.cs
@@ -18,6 +18,11 @@ namespace Ryujinx.HLE.HOS.Services.Sockets.Bsd
public EventFileDescriptor(ulong value, EventFdFlags flags)
{
+ // FIXME: We should support blocking operations.
+ // Right now they can't be supported because it would cause the
+ // service to lock up as we only have one thread processing requests.
+ flags |= EventFdFlags.NonBlocking;
+
_value = value;
_flags = flags;