From 5de66b2a53f642e0f5b3048d3cc57041ad38faa3 Mon Sep 17 00:00:00 2001 From: lizzie Date: Sat, 15 Aug 2026 04:45:44 +0000 Subject: [PATCH] need the extra threads... --- src/core/hle/service/server_manager.cpp | 7 +++++++ src/core/hle/service/server_manager.h | 1 + src/core/hle/service/sockets/sockets.cpp | 2 +- 3 files changed, 9 insertions(+), 1 deletion(-) diff --git a/src/core/hle/service/server_manager.cpp b/src/core/hle/service/server_manager.cpp index 9e97cd3378..9bc9c7c571 100644 --- a/src/core/hle/service/server_manager.cpp +++ b/src/core/hle/service/server_manager.cpp @@ -129,6 +129,13 @@ ServerManager::~ServerManager() { } } +void ServerManager::StartAdditionalHostThreads(const char* name, size_t num_threads) { + for (size_t i = 0; i < num_threads; i++) { + auto thread_name = fmt::format("{}:{}", name, i + 1); + m_threads.emplace_back(m_system.Kernel().RunOnHostCoreThread(std::move(thread_name), [&] { this->LoopProcessImpl(); })); + } +} + void ServerManager::RunServer(std::unique_ptr&& server_manager) { server_manager->m_system.RunServer(std::move(server_manager)); } diff --git a/src/core/hle/service/server_manager.h b/src/core/hle/service/server_manager.h index 5525c3838a..fa2ece2b39 100644 --- a/src/core/hle/service/server_manager.h +++ b/src/core/hle/service/server_manager.h @@ -52,6 +52,7 @@ public: Result LoopProcess(); + void StartAdditionalHostThreads(const char* name, size_t num_threads); static void RunServer(std::unique_ptr&& server); private: diff --git a/src/core/hle/service/sockets/sockets.cpp b/src/core/hle/service/sockets/sockets.cpp index 5623857541..cda8ef78c2 100644 --- a/src/core/hle/service/sockets/sockets.cpp +++ b/src/core/hle/service/sockets/sockets.cpp @@ -14,13 +14,13 @@ namespace Service::Sockets { void LoopProcess(Core::System& system) { auto server_manager = std::make_unique(system); - server_manager->RegisterNamedService("bsd:s", std::make_shared(system, "bsd:s")); server_manager->RegisterNamedService("bsd:u", std::make_shared(system, "bsd:u")); server_manager->RegisterNamedService("bsdcfg", std::make_shared(system)); server_manager->RegisterNamedService("nsd:a", std::make_shared(system, "nsd:a")); server_manager->RegisterNamedService("nsd:u", std::make_shared(system, "nsd:u")); server_manager->RegisterNamedService("sfdnsres", std::make_shared(system)); + server_manager->StartAdditionalHostThreads("bsdsocket", 2); ServerManager::RunServer(std::move(server_manager)); }