mirror of
https://git.eden-emu.dev/eden-emu/eden.git
synced 2026-09-11 14:24:20 +00:00
Compare commits
1 Commits
| Author | SHA1 | Date | |
|---|---|---|---|
| c95ad020fb |
@@ -1,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2022 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -12,9 +9,7 @@
|
||||
namespace AudioCore::Renderer {
|
||||
|
||||
Manager::Manager(Core::System& system_)
|
||||
: system{system_}
|
||||
, system_manager{std::make_unique<SystemManager>(system)}
|
||||
{
|
||||
: system{system_}, system_manager{std::make_unique<SystemManager>(system)} {
|
||||
std::iota(session_ids.begin(), session_ids.end(), 0);
|
||||
}
|
||||
|
||||
@@ -43,12 +38,14 @@ Result Manager::GetWorkBufferSize(const AudioRendererParameterInternal& params,
|
||||
|
||||
s32 Manager::GetSessionId() {
|
||||
std::scoped_lock l{session_lock};
|
||||
ASSERT(session_count <= session_ids.size());
|
||||
auto const session_id = session_ids[session_count];
|
||||
if (session_id >= 0) {
|
||||
session_ids[session_count] = -1;
|
||||
session_count++;
|
||||
auto session_id{session_ids[session_count]};
|
||||
|
||||
if (session_id == -1) {
|
||||
return -1;
|
||||
}
|
||||
|
||||
session_ids[session_count] = -1;
|
||||
session_count++;
|
||||
return session_id;
|
||||
}
|
||||
|
||||
|
||||
@@ -185,26 +185,26 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("aud:a", std::make_shared<IAudioSystemManagerForApplet>(system), 30);
|
||||
server_manager->RegisterNamedService("aud:d", std::make_shared<IAudioSystemManagerForDebugger>(system), 30);
|
||||
server_manager->RegisterNamedService("aud:a", std::make_shared<IAudioSystemManagerForApplet>(system));
|
||||
server_manager->RegisterNamedService("aud:d", std::make_shared<IAudioSystemManagerForDebugger>(system));
|
||||
|
||||
server_manager->RegisterNamedService("audout:d", std::make_shared<IAudioOutManagerForDebugger>(system), 30);
|
||||
server_manager->RegisterNamedService("audin:d", std::make_shared<IAudioInManagerForDebugger>(system), 30);
|
||||
server_manager->RegisterNamedService("audrec:d", std::make_shared<IFinalOutputRecorderManagerForDebugger>(system), 30);
|
||||
server_manager->RegisterNamedService("audren:d", std::make_shared<IAudioInManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audout:d", std::make_shared<IAudioOutManagerForDebugger>(system));
|
||||
server_manager->RegisterNamedService("audin:d", std::make_shared<IAudioInManagerForDebugger>(system));
|
||||
server_manager->RegisterNamedService("audrec:d", std::make_shared<IFinalOutputRecorderManagerForDebugger>(system));
|
||||
server_manager->RegisterNamedService("audren:d", std::make_shared<IAudioInManager>(system));
|
||||
|
||||
server_manager->RegisterNamedService("audin:u", std::make_shared<IAudioInManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audin:a", std::make_shared<IAudioInManagerForApplet>(system), 30);
|
||||
server_manager->RegisterNamedService("audout:u", std::make_shared<IAudioOutManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audout:a", std::make_shared<IAudioOutManagerForApplet>(system), 30);
|
||||
server_manager->RegisterNamedService("auddev", std::make_shared<IAudioSnoopManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audin:u", std::make_shared<IAudioInManager>(system));
|
||||
server_manager->RegisterNamedService("audin:a", std::make_shared<IAudioInManagerForApplet>(system));
|
||||
server_manager->RegisterNamedService("audout:u", std::make_shared<IAudioOutManager>(system));
|
||||
server_manager->RegisterNamedService("audout:a", std::make_shared<IAudioOutManagerForApplet>(system));
|
||||
server_manager->RegisterNamedService("auddev", std::make_shared<IAudioSnoopManager>(system));
|
||||
// Depends on audout:u and audin:u on ctor!
|
||||
server_manager->RegisterNamedService("audctl", std::make_shared<IAudioController>(system), 30);
|
||||
server_manager->RegisterNamedService("audrec:a", std::make_shared<IFinalOutputRecorderManagerForApplet>(system), 30);
|
||||
server_manager->RegisterNamedService("audrec:u", std::make_shared<IFinalOutputRecorderManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audren:u", std::make_shared<IAudioRendererManager>(system), 30);
|
||||
server_manager->RegisterNamedService("audren:a", std::make_shared<IAudioRendererManagerForApplet>(system), 30);
|
||||
server_manager->RegisterNamedService("hwopus", std::make_shared<IHardwareOpusDecoderManager>(system), 25);
|
||||
server_manager->RegisterNamedService("audctl", std::make_shared<IAudioController>(system));
|
||||
server_manager->RegisterNamedService("audrec:a", std::make_shared<IFinalOutputRecorderManagerForApplet>(system));
|
||||
server_manager->RegisterNamedService("audrec:u", std::make_shared<IFinalOutputRecorderManager>(system));
|
||||
server_manager->RegisterNamedService("audren:u", std::make_shared<IAudioRendererManager>(system));
|
||||
server_manager->RegisterNamedService("audren:a", std::make_shared<IAudioRendererManagerForApplet>(system));
|
||||
server_manager->RegisterNamedService("hwopus", std::make_shared<IHardwareOpusDecoderManager>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -15,16 +12,25 @@ namespace Service::BCAT {
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("bcat:a", std::make_shared<IServiceCreator>(system, "bcat:a"), 32);
|
||||
server_manager->RegisterNamedService("bcat:m", std::make_shared<IServiceCreator>(system, "bcat:m"), 32);
|
||||
server_manager->RegisterNamedService("bcat:u", std::make_shared<IServiceCreator>(system, "bcat:u"), 32);
|
||||
server_manager->RegisterNamedService("bcat:s", std::make_shared<IServiceCreator>(system, "bcat:s"), 32);
|
||||
server_manager->RegisterNamedService("bcat:a",
|
||||
std::make_shared<IServiceCreator>(system, "bcat:a"));
|
||||
server_manager->RegisterNamedService("bcat:m",
|
||||
std::make_shared<IServiceCreator>(system, "bcat:m"));
|
||||
server_manager->RegisterNamedService("bcat:u",
|
||||
std::make_shared<IServiceCreator>(system, "bcat:u"));
|
||||
server_manager->RegisterNamedService("bcat:s",
|
||||
std::make_shared<IServiceCreator>(system, "bcat:s"));
|
||||
|
||||
server_manager->RegisterNamedService("news:a", std::make_shared<News::IServiceCreator>(system, 0xffffffff, "news:a"), 32);
|
||||
server_manager->RegisterNamedService("news:p", std::make_shared<News::IServiceCreator>(system, 0x1, "news:p"), 32);
|
||||
server_manager->RegisterNamedService("news:c", std::make_shared<News::IServiceCreator>(system, 0x2, "news:c"), 32);
|
||||
server_manager->RegisterNamedService("news:v", std::make_shared<News::IServiceCreator>(system, 0x4, "news:v"), 32);
|
||||
server_manager->RegisterNamedService("news:m", std::make_shared<News::IServiceCreator>(system, 0xd, "news:m"), 32);
|
||||
server_manager->RegisterNamedService(
|
||||
"news:a", std::make_shared<News::IServiceCreator>(system, 0xffffffff, "news:a"));
|
||||
server_manager->RegisterNamedService(
|
||||
"news:p", std::make_shared<News::IServiceCreator>(system, 0x1, "news:p"));
|
||||
server_manager->RegisterNamedService(
|
||||
"news:c", std::make_shared<News::IServiceCreator>(system, 0x2, "news:c"));
|
||||
server_manager->RegisterNamedService(
|
||||
"news:v", std::make_shared<News::IServiceCreator>(system, 0x4, "news:v"));
|
||||
server_manager->RegisterNamedService(
|
||||
"news:m", std::make_shared<News::IServiceCreator>(system, 0xd, "news:m"));
|
||||
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
@@ -101,28 +101,14 @@ public:
|
||||
}
|
||||
};
|
||||
|
||||
class BPC_AMS final : public ServiceFramework<BPC_AMS> {
|
||||
public:
|
||||
explicit BPC_AMS(Core::System& system_) : ServiceFramework{system_, "bpc:ams"} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{65000, nullptr, "RebootToFatalError"},
|
||||
{65001, nullptr, "SetRebootPayload"},
|
||||
};
|
||||
// clang-format on
|
||||
RegisterHandlers(functions);
|
||||
}
|
||||
};
|
||||
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("bpc", std::make_shared<BPC>(system), 13);
|
||||
server_manager->RegisterNamedService("bpc:r", std::make_shared<BPC_R>(system), 13);
|
||||
server_manager->RegisterNamedService("bpc:c", std::make_shared<BPC_C>(system), 13);
|
||||
server_manager->RegisterNamedService("bpc:b", std::make_shared<BPC_B>(system), 13);
|
||||
server_manager->RegisterNamedService("bpc:w", std::make_shared<BPC_W>(system), 13);
|
||||
server_manager->RegisterNamedService("bpc:ams", std::make_shared<BPC_AMS>(system), 4);
|
||||
server_manager->RegisterNamedService("bpc", std::make_shared<BPC>(system));
|
||||
server_manager->RegisterNamedService("bpc:r", std::make_shared<BPC_R>(system));
|
||||
server_manager->RegisterNamedService("bpc:c", std::make_shared<BPC_C>(system));
|
||||
server_manager->RegisterNamedService("bpc:b", std::make_shared<BPC_B>(system));
|
||||
server_manager->RegisterNamedService("bpc:w", std::make_shared<BPC_W>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -804,9 +804,9 @@ void LoopProcess(Core::System& system) {
|
||||
|
||||
const auto FileSystemProxyFactory = [&] { return std::make_shared<FSP_SRV>(system); };
|
||||
|
||||
server_manager->RegisterNamedService("fsp-ldr", std::make_shared<FSP_LDR>(system), 61);
|
||||
server_manager->RegisterNamedService("fsp-pr", std::make_shared<FSP_PR>(system), 61);
|
||||
server_manager->RegisterNamedService("fsp-srv", std::move(FileSystemProxyFactory), 61);
|
||||
server_manager->RegisterNamedService("fsp-ldr", std::make_shared<FSP_LDR>(system));
|
||||
server_manager->RegisterNamedService("fsp-pr", std::make_shared<FSP_PR>(system));
|
||||
server_manager->RegisterNamedService("fsp-srv", std::move(FileSystemProxyFactory));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -36,18 +36,18 @@ std::optional<u64> GetTitleIDForProcessID(Core::System& system, u64 process_id)
|
||||
ARP_R::ARP_R(Core::System& system_, const ARPManager& manager_)
|
||||
: ServiceFramework{system_, "arp:r"}, manager{manager_} {
|
||||
// clang-format off
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &ARP_R::GetApplicationLaunchProperty, "GetApplicationLaunchProperty"},
|
||||
{1, &ARP_R::GetApplicationLaunchPropertyWithApplicationId, "GetApplicationLaunchPropertyWithApplicationId"},
|
||||
{2, &ARP_R::GetApplicationControlProperty, "GetApplicationControlProperty"},
|
||||
{3, &ARP_R::GetApplicationControlPropertyWithApplicationId, "GetApplicationControlPropertyWithApplicationId"},
|
||||
{4, nullptr, "GetApplicationInstanceUnregistrationNotifier"},
|
||||
{5, nullptr, "ListApplicationInstanceId"},
|
||||
{6, nullptr, "GetMicroApplicationInstanceId"},
|
||||
{7, nullptr, "GetApplicationCertificate"},
|
||||
{9998, nullptr, "GetPreomiaApplicationLaunchProperty"},
|
||||
{9999, nullptr, "GetPreomiaApplicationControlProperty"},
|
||||
};
|
||||
static const FunctionInfo functions[] = {
|
||||
{0, &ARP_R::GetApplicationLaunchProperty, "GetApplicationLaunchProperty"},
|
||||
{1, &ARP_R::GetApplicationLaunchPropertyWithApplicationId, "GetApplicationLaunchPropertyWithApplicationId"},
|
||||
{2, &ARP_R::GetApplicationControlProperty, "GetApplicationControlProperty"},
|
||||
{3, &ARP_R::GetApplicationControlPropertyWithApplicationId, "GetApplicationControlPropertyWithApplicationId"},
|
||||
{4, nullptr, "GetApplicationInstanceUnregistrationNotifier"},
|
||||
{5, nullptr, "ListApplicationInstanceId"},
|
||||
{6, nullptr, "GetMicroApplicationInstanceId"},
|
||||
{7, nullptr, "GetApplicationCertificate"},
|
||||
{9998, nullptr, "GetPreomiaApplicationLaunchProperty"},
|
||||
{9999, nullptr, "GetPreomiaApplicationControlProperty"},
|
||||
};
|
||||
// clang-format on
|
||||
|
||||
RegisterHandlers(functions);
|
||||
@@ -191,7 +191,8 @@ private:
|
||||
}
|
||||
|
||||
if (issued) {
|
||||
LOG_ERROR(Service_ARP, "Attempted to issue registrar, but registrar is already issued!");
|
||||
LOG_ERROR(Service_ARP,
|
||||
"Attempted to issue registrar, but registrar is already issued!");
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(Glue::ResultAlreadyBound);
|
||||
return;
|
||||
@@ -208,7 +209,9 @@ private:
|
||||
LOG_DEBUG(Service_ARP, "called");
|
||||
|
||||
if (issued) {
|
||||
LOG_ERROR(Service_ARP, "Attempted to set application launch property, but registrar is already issued!");
|
||||
LOG_ERROR(
|
||||
Service_ARP,
|
||||
"Attempted to set application launch property, but registrar is already issued!");
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(Glue::ResultAlreadyBound);
|
||||
return;
|
||||
@@ -225,7 +228,9 @@ private:
|
||||
LOG_DEBUG(Service_ARP, "called");
|
||||
|
||||
if (issued) {
|
||||
LOG_ERROR(Service_ARP, "Attempted to set application control property, but registrar is already issued!");
|
||||
LOG_ERROR(
|
||||
Service_ARP,
|
||||
"Attempted to set application control property, but registrar is already issued!");
|
||||
IPC::ResponseBuilder rb{ctx, 2};
|
||||
rb.Push(Glue::ResultAlreadyBound);
|
||||
return;
|
||||
|
||||
@@ -22,8 +22,8 @@ void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
// ARP
|
||||
server_manager->RegisterNamedService("arp:r", std::make_shared<ARP_R>(system, system.GetARPManager()), 16);
|
||||
server_manager->RegisterNamedService("arp:w", std::make_shared<ARP_W>(system, system.GetARPManager()), 8);
|
||||
server_manager->RegisterNamedService("arp:r", std::make_shared<ARP_R>(system, system.GetARPManager()));
|
||||
server_manager->RegisterNamedService("arp:w", std::make_shared<ARP_W>(system, system.GetARPManager()));
|
||||
|
||||
// BackGround Task Controller
|
||||
server_manager->RegisterNamedService("bgtc:t", std::make_shared<BGTC_T>(system));
|
||||
|
||||
@@ -46,8 +46,8 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("grc:c", std::make_shared<GRC>(system), 4);
|
||||
server_manager->RegisterNamedService("grc:d", std::make_shared<GRC_D>(system), 4);
|
||||
server_manager->RegisterNamedService("grc:c", std::make_shared<GRC>(system));
|
||||
server_manager->RegisterNamedService("grc:d", std::make_shared<GRC_D>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -59,9 +56,9 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("ldr:dmnt", std::make_shared<DebugMonitor>(system), 3);
|
||||
server_manager->RegisterNamedService("ldr:pm", std::make_shared<ProcessManager>(system), 1);
|
||||
server_manager->RegisterNamedService("ldr:shel", std::make_shared<Shell>(system), 3);
|
||||
server_manager->RegisterNamedService("ldr:dmnt", std::make_shared<DebugMonitor>(system));
|
||||
server_manager->RegisterNamedService("ldr:pm", std::make_shared<ProcessManager>(system));
|
||||
server_manager->RegisterNamedService("ldr:shel", std::make_shared<Shell>(system));
|
||||
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
@@ -169,9 +169,9 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("ngct:u", std::make_shared<IService>(system), 4);
|
||||
server_manager->RegisterNamedService("ngct:s", std::make_shared<IServiceWithManagementApi>(system), 4);
|
||||
server_manager->RegisterNamedService("ngc:u", std::make_shared<NgcServiceImpl>(system), 4);
|
||||
server_manager->RegisterNamedService("ngct:u", std::make_shared<IService>(system));
|
||||
server_manager->RegisterNamedService("ngct:s", std::make_shared<IServiceWithManagementApi>(system));
|
||||
server_manager->RegisterNamedService("ngc:u", std::make_shared<NgcServiceImpl>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -1144,9 +1144,12 @@ private:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("nifm:a", std::make_shared<NetworkInterface>("nifm:a", system), 2);
|
||||
server_manager->RegisterNamedService("nifm:s", std::make_shared<NetworkInterface>("nifm:s", system), 16);
|
||||
server_manager->RegisterNamedService("nifm:u", std::make_shared<NetworkInterface>("nifm:u", system), 5);
|
||||
server_manager->RegisterNamedService("nifm:a",
|
||||
std::make_shared<NetworkInterface>("nifm:a", system));
|
||||
server_manager->RegisterNamedService("nifm:s",
|
||||
std::make_shared<NetworkInterface>("nifm:s", system));
|
||||
server_manager->RegisterNamedService("nifm:u",
|
||||
std::make_shared<NetworkInterface>("nifm:u", system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -81,16 +81,16 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("ns:am2", std::make_shared<IServiceGetterInterface>(system, "ns:am2"), 5);
|
||||
server_manager->RegisterNamedService("ns:ec", std::make_shared<IServiceGetterInterface>(system, "ns:ec"), 5);
|
||||
server_manager->RegisterNamedService("ns:rid", std::make_shared<IServiceGetterInterface>(system, "ns:rid"), 5);
|
||||
server_manager->RegisterNamedService("ns:rt", std::make_shared<IServiceGetterInterface>(system, "ns:rt"), 5);
|
||||
server_manager->RegisterNamedService("ns:web", std::make_shared<IServiceGetterInterface>(system, "ns:web"), 5);
|
||||
server_manager->RegisterNamedService("ns:ro", std::make_shared<IServiceGetterInterface>(system, "ns:ro"), 5);
|
||||
server_manager->RegisterNamedService("ns:am2", std::make_shared<IServiceGetterInterface>(system, "ns:am2"));
|
||||
server_manager->RegisterNamedService("ns:ec", std::make_shared<IServiceGetterInterface>(system, "ns:ec"));
|
||||
server_manager->RegisterNamedService("ns:rid", std::make_shared<IServiceGetterInterface>(system, "ns:rid"));
|
||||
server_manager->RegisterNamedService("ns:rt", std::make_shared<IServiceGetterInterface>(system, "ns:rt"));
|
||||
server_manager->RegisterNamedService("ns:web", std::make_shared<IServiceGetterInterface>(system, "ns:web"));
|
||||
server_manager->RegisterNamedService("ns:ro", std::make_shared<IServiceGetterInterface>(system, "ns:ro"));
|
||||
|
||||
server_manager->RegisterNamedService("ns:dev", std::make_shared<IDevelopInterface>(system), 5);
|
||||
server_manager->RegisterNamedService("ns:su", std::make_shared<ISystemUpdateInterface>(system), 5);
|
||||
server_manager->RegisterNamedService("ns:vm", std::make_shared<IVulnerabilityManagerInterface>(system), 5);
|
||||
server_manager->RegisterNamedService("ns:dev", std::make_shared<IDevelopInterface>(system));
|
||||
server_manager->RegisterNamedService("ns:su", std::make_shared<ISystemUpdateInterface>(system));
|
||||
server_manager->RegisterNamedService("ns:vm", std::make_shared<IVulnerabilityManagerInterface>(system));
|
||||
server_manager->RegisterNamedService("pdm:ntfy", std::make_shared<INotifyService>(system));
|
||||
server_manager->RegisterNamedService("pdm:qry", std::make_shared<IQueryService>(system));
|
||||
|
||||
|
||||
@@ -252,10 +252,10 @@ private:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("pm:bm", std::make_shared<BootMode>(system), 4); // Nx = 4, Ams = 8
|
||||
server_manager->RegisterNamedService("pm:dmnt", std::make_shared<DebugMonitor>(system), 16);
|
||||
server_manager->RegisterNamedService("pm:shell", std::make_shared<Shell>(system), 3); //Nx = 3, AMS = 8
|
||||
server_manager->RegisterNamedService("pm:info", std::make_shared<Info>(system), 25); //48-(4+16+3)
|
||||
server_manager->RegisterNamedService("pm:bm", std::make_shared<BootMode>(system));
|
||||
server_manager->RegisterNamedService("pm:dmnt", std::make_shared<DebugMonitor>(system));
|
||||
server_manager->RegisterNamedService("pm:info", std::make_shared<Info>(system));
|
||||
server_manager->RegisterNamedService("pm:shell", std::make_shared<Shell>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -593,9 +593,9 @@ void LoopProcess(Core::System& system) {
|
||||
return std::make_shared<RoInterface>(system, "ldr:ro", ro, NrrKind::User);
|
||||
};
|
||||
|
||||
server_manager->RegisterNamedService("ldr:ro", std::move(RoInterfaceFactoryForUser), 2);
|
||||
server_manager->RegisterNamedService("ro:1", std::make_shared<RoInterface>(system, "ro:1", ro, NrrKind::JitPlugin), 2);
|
||||
server_manager->RegisterNamedService("ro:dmnt", std::make_shared<IDebugMonitorInterface>(system), 2);
|
||||
server_manager->RegisterNamedService("ldr:ro", std::move(RoInterfaceFactoryForUser));
|
||||
server_manager->RegisterNamedService("ro:1", std::make_shared<RoInterface>(system, "ro:1", ro, NrrKind::JitPlugin));
|
||||
server_manager->RegisterNamedService("ro:dmnt", std::make_shared<IDebugMonitorInterface>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -1,6 +1,3 @@
|
||||
// SPDX-FileCopyrightText: Copyright 2026 Eden Emulator Project
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
// SPDX-FileCopyrightText: Copyright 2018 yuzu Emulator Project
|
||||
// SPDX-License-Identifier: GPL-2.0-or-later
|
||||
|
||||
@@ -16,10 +13,13 @@ namespace Service::Set {
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("set", std::make_shared<ISettingsServer>(system), 60);
|
||||
server_manager->RegisterNamedService("set:cal", std::make_shared<IFactorySettingsServer>(system), 60);
|
||||
server_manager->RegisterNamedService("set:fd", std::make_shared<IFirmwareDebugSettingsServer>(system), 60);
|
||||
server_manager->RegisterNamedService("set:sys", std::make_shared<ISystemSettingsServer>(system), 60);
|
||||
server_manager->RegisterNamedService("set", std::make_shared<ISettingsServer>(system));
|
||||
server_manager->RegisterNamedService("set:cal",
|
||||
std::make_shared<IFactorySettingsServer>(system));
|
||||
server_manager->RegisterNamedService("set:fd",
|
||||
std::make_shared<IFirmwareDebugSettingsServer>(system));
|
||||
server_manager->RegisterNamedService("set:sys",
|
||||
std::make_shared<ISystemSettingsServer>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -53,7 +53,8 @@ static Result ValidateServiceName(const std::string& name) {
|
||||
return ResultSuccess;
|
||||
}
|
||||
|
||||
Result ServiceManager::RegisterService(Kernel::KServerPort** out_server_port, std::string name, u32 max_sessions, SessionRequestHandlerFactory handler) {
|
||||
Result ServiceManager::RegisterService(Kernel::KServerPort** out_server_port, std::string name,
|
||||
u32 max_sessions, SessionRequestHandlerFactory handler) {
|
||||
R_TRY(ValidateServiceName(name));
|
||||
|
||||
std::scoped_lock lk{lock};
|
||||
@@ -63,7 +64,7 @@ Result ServiceManager::RegisterService(Kernel::KServerPort** out_server_port, st
|
||||
}
|
||||
|
||||
auto* port = Kernel::KPort::Create(kernel);
|
||||
port->Initialize(kernel, max_sessions, false, 0);
|
||||
port->Initialize(kernel, ServerSessionCountMax, false, 0);
|
||||
|
||||
// Register the port.
|
||||
Kernel::KPort::Register(kernel, port);
|
||||
@@ -263,7 +264,7 @@ void SM::AtmosphereHasService(HLERequestContext& ctx) {
|
||||
}
|
||||
|
||||
SM::SM(ServiceManager& service_manager_, Core::System& system_)
|
||||
: ServiceFramework{system_, "sm:", 64}
|
||||
: ServiceFramework{system_, "sm:", 4}
|
||||
, service_manager{service_manager_}
|
||||
, kernel{system_.Kernel()}
|
||||
{
|
||||
|
||||
@@ -64,17 +64,17 @@ public:
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
|
||||
server_manager->RegisterNamedService("ethc:c", std::make_shared<ETHC_C>(system), 5);
|
||||
server_manager->RegisterNamedService("ethc:i", std::make_shared<ETHC_I>(system), 5);
|
||||
server_manager->RegisterNamedService("bsd:s", std::make_shared<BSD_USA>(system, "bsd:s", false), 0x7E);
|
||||
server_manager->RegisterNamedService("bsd:u", std::make_shared<BSD_USA>(system, "bsd:u", true), 0x0f);
|
||||
server_manager->RegisterNamedService("bsd:a", std::make_shared<BSD_USA>(system, "bsd:a", true), 0x17);
|
||||
server_manager->RegisterNamedService("bsd:nu", std::make_shared<BSD_NU>(system), 4);
|
||||
server_manager->RegisterNamedService("ethc:c", std::make_shared<ETHC_C>(system));
|
||||
server_manager->RegisterNamedService("ethc:i", std::make_shared<ETHC_I>(system));
|
||||
server_manager->RegisterNamedService("bsd:s", std::make_shared<BSD_USA>(system, "bsd:s", false));
|
||||
server_manager->RegisterNamedService("bsd:u", std::make_shared<BSD_USA>(system, "bsd:u", true));
|
||||
server_manager->RegisterNamedService("bsd:a", std::make_shared<BSD_USA>(system, "bsd:a", true));
|
||||
server_manager->RegisterNamedService("bsd:nu", std::make_shared<BSD_NU>(system));
|
||||
server_manager->RegisterNamedService("bsdcfg", std::make_shared<BSDCFG>(system, "bsdcfg"));
|
||||
server_manager->RegisterNamedService("ifcfg", std::make_shared<BSDCFG>(system, "ifcfg"));
|
||||
server_manager->RegisterNamedService("nsd:a", std::make_shared<NSD>(system, "nsd:a"));
|
||||
server_manager->RegisterNamedService("nsd:u", std::make_shared<NSD>(system, "nsd:u"));
|
||||
server_manager->RegisterNamedService("sfdnsres", std::make_shared<SFDNSRES>(system), 30);
|
||||
server_manager->RegisterNamedService("sfdnsres", std::make_shared<SFDNSRES>(system));
|
||||
server_manager->RegisterNamedService("dns:priv", std::make_shared<DNS_PRIV>(system));
|
||||
server_manager->RegisterNamedService("eth:nd", std::make_shared<ISfDriverServiceCreator>(system));
|
||||
|
||||
|
||||
@@ -265,17 +265,17 @@ void LoopProcess(Core::System& system) {
|
||||
|
||||
server_manager->RegisterNamedService("usb:ds", std::make_shared<IDsRootSession>(system));
|
||||
server_manager->RegisterNamedService("usb:hs", std::make_shared<IClientRootSession>(system));
|
||||
server_manager->RegisterNamedService("usb:pd", std::make_shared<IPdManager>(system), 6);
|
||||
server_manager->RegisterNamedService("usb:pd:c", std::make_shared<IPdCradleManager>(system), 4);
|
||||
server_manager->RegisterNamedService("usb:pd", std::make_shared<IPdManager>(system));
|
||||
server_manager->RegisterNamedService("usb:pd:c", std::make_shared<IPdCradleManager>(system));
|
||||
server_manager->RegisterNamedService("usb:pd:m", std::make_shared<IPdManufactureManager>(system));
|
||||
server_manager->RegisterNamedService("usb:pm", std::make_shared<IPmMainService>(system), 5);
|
||||
server_manager->RegisterNamedService("usb:pm", std::make_shared<IPmMainService>(system));
|
||||
// +7.0.0
|
||||
if (FirmwareManager::GetFirmwareVersion(system).first.major >= 7) {
|
||||
server_manager->RegisterNamedService("usb:qdb", std::make_shared<IQdbManager>(system));
|
||||
}
|
||||
// +8.0.0
|
||||
if (FirmwareManager::GetFirmwareVersion(system).first.major >= 8) {
|
||||
server_manager->RegisterNamedService("usb:obsv", std::make_shared<IPmObserverService>(system), 2);
|
||||
server_manager->RegisterNamedService("usb:obsv", std::make_shared<IPmObserverService>(system));
|
||||
}
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
@@ -246,14 +246,14 @@ public:
|
||||
|
||||
void LoopProcess(Core::System& system) {
|
||||
auto server_manager = std::make_unique<ServerManager>(system);
|
||||
server_manager->RegisterNamedService("wlan:lcl", std::make_shared<ILocalManager>(system), 10);
|
||||
server_manager->RegisterNamedService("wlan:lg", std::make_shared<ILocalGetFrame>(system), 10);
|
||||
server_manager->RegisterNamedService("wlan:lga", std::make_shared<ILocalGetActionFrame>(system), 10);
|
||||
server_manager->RegisterNamedService("wlan:sg", std::make_shared<ISocketGetFrame>(system), 10);
|
||||
server_manager->RegisterNamedService("wlan:soc", std::make_shared<ISocketManager>(system), 10);
|
||||
server_manager->RegisterNamedService("wlan:dtc", std::make_shared<IDetectManager>(system), 4);
|
||||
server_manager->RegisterNamedService("wlan:p", std::make_shared<IPrivateServiceCreator>(system), 30);
|
||||
server_manager->RegisterNamedService("wlan:nd", std::make_shared<ISfDriverServiceCreator>(system), 5);
|
||||
server_manager->RegisterNamedService("wlan:lcl", std::make_shared<ILocalManager>(system));
|
||||
server_manager->RegisterNamedService("wlan:lg", std::make_shared<ILocalGetFrame>(system));
|
||||
server_manager->RegisterNamedService("wlan:lga", std::make_shared<ILocalGetActionFrame>(system));
|
||||
server_manager->RegisterNamedService("wlan:sg", std::make_shared<ISocketGetFrame>(system));
|
||||
server_manager->RegisterNamedService("wlan:soc", std::make_shared<ISocketManager>(system));
|
||||
server_manager->RegisterNamedService("wlan:dtc", std::make_shared<IDetectManager>(system));
|
||||
server_manager->RegisterNamedService("wlan:p", std::make_shared<IPrivateServiceCreator>(system));
|
||||
server_manager->RegisterNamedService("wlan:nd", std::make_shared<ISfDriverServiceCreator>(system));
|
||||
ServerManager::RunServer(std::move(server_manager));
|
||||
}
|
||||
|
||||
|
||||
@@ -55,8 +55,8 @@ constexpr u64 GpuClockMultiplier(Settings::GpuClock clock) {
|
||||
|
||||
struct GPU::Impl {
|
||||
explicit Impl(Core::System& system_, bool is_async_, bool use_nvdec_)
|
||||
: gpu_thread{system_}
|
||||
, system{system_}
|
||||
: system{system_}
|
||||
, gpu_thread{system_}
|
||||
, use_nvdec{use_nvdec_}
|
||||
, shader_notify()
|
||||
, is_async{is_async_}
|
||||
@@ -182,6 +182,7 @@ struct GPU::Impl {
|
||||
}
|
||||
|
||||
void NotifyShutdown() {
|
||||
gpu_thread.NotifyShutdown();
|
||||
std::unique_lock lk{sync_mutex};
|
||||
shutting_down.store(true, std::memory_order::relaxed);
|
||||
sync_cv.notify_all();
|
||||
@@ -301,12 +302,12 @@ struct GPU::Impl {
|
||||
return out;
|
||||
}
|
||||
|
||||
Core::System& system;
|
||||
|
||||
// Destruction of thread must be done before all (non trivial)
|
||||
// previous members has been destroyed
|
||||
VideoCommon::GPUThread::ThreadManager gpu_thread;
|
||||
|
||||
Core::System& system;
|
||||
|
||||
std::unique_ptr<VideoCore::RendererBase> renderer;
|
||||
const bool use_nvdec;
|
||||
|
||||
|
||||
@@ -114,4 +114,11 @@ u64 ThreadManager::PushCommand(CommandData&& command_data, bool block, bool is_a
|
||||
return fence;
|
||||
}
|
||||
|
||||
void ThreadManager::NotifyShutdown() {
|
||||
if (thread.joinable()) {
|
||||
thread.request_stop();
|
||||
thread.join();
|
||||
}
|
||||
}
|
||||
|
||||
} // namespace VideoCommon::GPUThread
|
||||
|
||||
@@ -125,6 +125,8 @@ public:
|
||||
|
||||
void TickGPU(bool is_async);
|
||||
|
||||
void NotifyShutdown();
|
||||
|
||||
private:
|
||||
/// Pushes a command to be executed by the GPU thread
|
||||
u64 PushCommand(CommandData&& command_data, bool block, bool is_async);
|
||||
|
||||
Reference in New Issue
Block a user