Core: pass down Core::System reference to all services (#4272)

* Core: pass down Core::System reference to all services

This has to be done at once due to unified interface used by HLE/LLE switcher

* apt: eliminate Core::System::GetInstance

* gpu_gsp: eliminate Core::System::GetInstance in service

* hid: eliminate Core::System::GetInstance

* nwm: eliminate Core::System::GetInstance

* err_f: eliminate Core::System::GetInstance
This commit is contained in:
Weiyi Wang 2018-10-05 10:59:43 -04:00 committed by GitHub
parent 008242c5f3
commit b163502744
No known key found for this signature in database
GPG key ID: 4AEE18F83AFDEB23
77 changed files with 329 additions and 111 deletions

View file

@ -194,7 +194,7 @@ System::ResultStatus System::Init(EmuWindow& emu_window, u32 system_mode) {
HW::Init();
Kernel::Init(system_mode);
Service::Init(service_manager);
Service::Init(*this, service_manager);
GDBStub::Init();
ResultStatus result = VideoCore::Init(emu_window);

View file

@ -5,6 +5,7 @@
#include <vector>
#include "common/common_types.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
@ -171,7 +172,8 @@ void Module::Interface::SetClientVersion(Kernel::HLERequestContext& ctx) {
Module::Interface::Interface(std::shared_ptr<Module> ac, const char* name, u32 max_session)
: ServiceFramework(name, max_session), ac(std::move(ac)) {}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto ac = std::make_shared<Module>();
std::make_shared<AC_I>(ac)->InstallAsService(service_manager);
std::make_shared<AC_U>(ac)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class Event;
}
@ -152,6 +156,6 @@ protected:
Kernel::SharedPtr<Kernel::Event> disconnect_event;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::AC

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/act/act.h"
#include "core/hle/service/act/act_a.h"
#include "core/hle/service/act/act_u.h"
@ -13,7 +14,8 @@ Module::Interface::Interface(std::shared_ptr<Module> act, const char* name)
Module::Interface::~Interface() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto act = std::make_shared<Module>();
std::make_shared<ACT_A>(act)->InstallAsService(service_manager);
std::make_shared<ACT_U>(act)->InstallAsService(service_manager);

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::ACT {
/// Initializes all ACT services
@ -21,6 +25,6 @@ public:
};
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::ACT

View file

@ -12,6 +12,7 @@
#include "common/file_util.h"
#include "common/logging/log.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/errors.h"
#include "core/file_sys/ncch_container.h"
#include "core/file_sys/title_metadata.h"
@ -1462,7 +1463,8 @@ Module::Module() {
Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto am = std::make_shared<Module>();
std::make_shared<AM_APP>(am)->InstallAsService(service_manager);
std::make_shared<AM_NET>(am)->InstallAsService(service_manager);

View file

@ -16,6 +16,10 @@
#include "core/hle/result.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FS {
enum class MediaType : u32;
}
@ -574,6 +578,6 @@ private:
Kernel::SharedPtr<Kernel::Mutex> system_updater_mutex;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::AM

View file

@ -182,7 +182,8 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) {
IPC::RequestBuilder rb = rp.MakeBuilder(2, 2);
// Log in telemetry if the game uses the shared font
Core::Telemetry().AddField(Telemetry::FieldType::Session, "RequiresSharedFont", true);
apt->system.TelemetrySession().AddField(Telemetry::FieldType::Session, "RequiresSharedFont",
true);
if (!apt->shared_font_loaded) {
// On real 3DS, font loading happens on booting. However, we load it on demand to coordinate
@ -197,8 +198,7 @@ void Module::Interface::GetSharedFont(Kernel::HLERequestContext& ctx) {
rb.Push<u32>(-1); // TODO: Find the right error code
rb.Push<u32>(0);
rb.PushCopyObjects<Kernel::Object>(nullptr);
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorSystemFiles,
"Shared fonts");
apt->system.SetStatus(Core::System::ResultStatus::ErrorSystemFiles, "Shared fonts");
return;
}
}
@ -544,7 +544,7 @@ void Module::Interface::CloseApplication(Kernel::HLERequestContext& ctx) {
LOG_DEBUG(Service_APT, "called");
Core::System::GetInstance().RequestShutdown();
apt->system.RequestShutdown();
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -584,11 +584,11 @@ void Module::Interface::DoApplicationJump(Kernel::HLERequestContext& ctx) {
if (application_reset_prepared) {
// Reset system
Core::System::GetInstance().RequestReset();
apt->system.RequestReset();
} else {
// After the jump, the application should shutdown
// TODO: Actually implement the jump
Core::System::GetInstance().RequestShutdown();
apt->system.RequestShutdown();
}
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
@ -843,7 +843,7 @@ Module::Interface::Interface(std::shared_ptr<Module> apt, const char* name, u32
Module::Interface::~Interface() = default;
Module::Module() {
Module::Module(Core::System& system) : system(system) {
applet_manager = std::make_shared<AppletManager>();
using Kernel::MemoryPermission;
@ -857,8 +857,9 @@ Module::Module() {
Module::~Module() {}
void InstallInterfaces(SM::ServiceManager& service_manager) {
auto apt = std::make_shared<Module>();
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto apt = std::make_shared<Module>(system);
std::make_shared<APT_U>(apt)->InstallAsService(service_manager);
std::make_shared<APT_S>(apt)->InstallAsService(service_manager);
std::make_shared<APT_A>(apt)->InstallAsService(service_manager);

View file

@ -11,6 +11,10 @@
#include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class Mutex;
class SharedMemory;
@ -52,7 +56,7 @@ enum class ScreencapPostPermission : u32 {
class Module final {
public:
Module();
explicit Module(Core::System& system);
~Module();
class Interface : public ServiceFramework<Interface> {
@ -582,6 +586,8 @@ private:
bool LoadSharedFont();
bool LoadLegacySharedFont();
Core::System& system;
/// Handle to shared memory region designated to for shared system font
Kernel::SharedPtr<Kernel::SharedMemory> shared_font_mem;
bool shared_font_loaded = false;
@ -602,6 +608,6 @@ private:
std::shared_ptr<AppletManager> applet_manager;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::APT

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/result.h"
#include "core/hle/service/boss/boss.h"
@ -908,7 +909,8 @@ Module::Module() {
task_finish_event = Event::Create(Kernel::ResetType::OneShot, "BOSS::task_finish_event");
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto boss = std::make_shared<Module>();
std::make_shared<BOSS_P>(boss)->InstallAsService(service_manager);
std::make_shared<BOSS_U>(boss)->InstallAsService(service_manager);

View file

@ -7,6 +7,10 @@
#include "core/hle/kernel/event.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::BOSS {
class Module final {
@ -960,6 +964,6 @@ private:
Kernel::SharedPtr<Kernel::Event> task_finish_event;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::BOSS

View file

@ -5,6 +5,7 @@
#include <algorithm>
#include "common/bit_set.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/core_timing.h"
#include "core/frontend/camera/factory.h"
#include "core/hle/ipc.h"
@ -1054,7 +1055,8 @@ void ReloadCameraDevices() {
cam->ReloadCameraDevices();
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cam = std::make_shared<Module>();
current_cam = cam;

View file

@ -13,6 +13,10 @@
#include "core/hle/result.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Camera {
class CameraInterface;
}
@ -782,6 +786,6 @@ private:
/// Reload camera devices. Used when input configuration changed
void ReloadCameraDevices();
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::CAM

View file

@ -9,6 +9,7 @@
#include "common/file_util.h"
#include "common/logging/log.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/file_sys/archive_systemsavedata.h"
#include "core/file_sys/directory_backend.h"
#include "core/file_sys/errors.h"
@ -1430,7 +1431,8 @@ Module::Module() {
Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cecd = std::make_shared<Module>();
std::make_shared<CECD_NDM>(cecd)->InstallAsService(service_manager);
std::make_shared<CECD_S>(cecd)->InstallAsService(service_manager);

View file

@ -15,6 +15,10 @@ class ArchiveBackend;
class FileBackend;
} // namespace FileSys
namespace Core {
class System;
}
namespace Service::CECD {
class Module final {
@ -609,6 +613,6 @@ private:
};
/// Initialize CECD service(s)
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::CECD

View file

@ -11,6 +11,7 @@
#include "common/logging/log.h"
#include "common/string_util.h"
#include "common/swap.h"
#include "core/core.h"
#include "core/file_sys/archive_systemsavedata.h"
#include "core/file_sys/errors.h"
#include "core/file_sys/file_backend.h"
@ -721,7 +722,8 @@ u64 Module::GetConsoleUniqueId() {
return console_id_le;
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto cfg = std::make_shared<Module>();
std::make_shared<CFG_I>(cfg)->InstallAsService(service_manager);
std::make_shared<CFG_S>(cfg)->InstallAsService(service_manager);

View file

@ -15,6 +15,10 @@ namespace FileSys {
class ArchiveBackend;
}
namespace Core {
class System;
}
namespace Service::CFG {
enum SystemModel {
@ -407,7 +411,7 @@ private:
u32 preferred_region_code = 0;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
std::shared_ptr<Module> GetCurrentModule();
} // namespace Service::CFG

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "common/alignment.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/result.h"
#include "core/hle/service/csnd/csnd_snd.h"
@ -193,7 +194,8 @@ CSND_SND::CSND_SND() : ServiceFramework("csnd:SND", 4) {
RegisterHandlers(functions);
};
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<CSND_SND>()->InstallAsService(service_manager);
}

View file

@ -8,6 +8,10 @@
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::CSND {
class CSND_SND final : public ServiceFramework<CSND_SND> {
@ -178,6 +182,6 @@ private:
};
/// Initializes the CSND_SND Service
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::CSND

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/dlp/dlp.h"
#include "core/hle/service/dlp/dlp_clnt.h"
#include "core/hle/service/dlp/dlp_fkcl.h"
@ -9,7 +10,8 @@
namespace Service::DLP {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<DLP_CLNT>()->InstallAsService(service_manager);
std::make_shared<DLP_FKCL>()->InstallAsService(service_manager);
std::make_shared<DLP_SRVR>()->InstallAsService(service_manager);

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::DLP {
/// Initializes the DLP services.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::DLP

View file

@ -399,7 +399,8 @@ DSP_DSP::~DSP_DSP() {
pipes = {};
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto dsp = std::make_shared<DSP_DSP>();
dsp->InstallAsService(service_manager);
Core::DSP().SetServiceToInterrupt(std::move(dsp));

View file

@ -9,6 +9,10 @@
#include "core/hle/result.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::DSP {
class DSP_DSP final : public ServiceFramework<DSP_DSP> {
@ -250,6 +254,6 @@ private:
std::array<Kernel::SharedPtr<Kernel::Event>, AudioCore::num_dsp_pipe> pipes = {{}};
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::DSP

View file

@ -154,7 +154,7 @@ void ERR_F::ThrowFatalError(Kernel::HLERequestContext& ctx) {
LOG_CRITICAL(Service_ERR, "Fatal error");
const ErrInfo errinfo = rp.PopRaw<ErrInfo>();
LOG_CRITICAL(Service_ERR, "Fatal error type: {}", GetErrType(errinfo.errinfo_common.specifier));
Core::System::GetInstance().SetStatus(Core::System::ResultStatus::ErrorUnknown);
system.SetStatus(Core::System::ResultStatus::ErrorUnknown);
// Generic Info
LogGenericInfo(errinfo.errinfo_common);
@ -232,7 +232,7 @@ void ERR_F::ThrowFatalError(Kernel::HLERequestContext& ctx) {
rb.Push(RESULT_SUCCESS);
}
ERR_F::ERR_F() : ServiceFramework("err:f", 1) {
ERR_F::ERR_F(Core::System& system) : ServiceFramework("err:f", 1), system(system) {
static const FunctionInfo functions[] = {
{0x00010800, &ERR_F::ThrowFatalError, "ThrowFatalError"},
{0x00020042, nullptr, "SetUserString"},
@ -242,8 +242,8 @@ ERR_F::ERR_F() : ServiceFramework("err:f", 1) {
ERR_F::~ERR_F() = default;
void InstallInterfaces() {
auto errf = std::make_shared<ERR_F>();
void InstallInterfaces(Core::System& system) {
auto errf = std::make_shared<ERR_F>(system);
errf->InstallAsNamedPort();
}

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class HLERequestContext;
}
@ -15,7 +19,7 @@ namespace Service::ERR {
/// Interface to "err:f" service
class ERR_F final : public ServiceFramework<ERR_F> {
public:
ERR_F();
explicit ERR_F(Core::System& system);
~ERR_F();
private:
@ -28,8 +32,10 @@ private:
* 1 : Result code
*/
void ThrowFatalError(Kernel::HLERequestContext& ctx);
Core::System& system;
};
void InstallInterfaces();
void InstallInterfaces(Core::System& system);
} // namespace Service::ERR

View file

@ -7,6 +7,7 @@
#include "common/assert.h"
#include "common/logging/log.h"
#include "common/string_util.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/result.h"
#include "core/hle/service/frd/frd.h"
@ -149,7 +150,8 @@ void Module::Interface::SetClientSdkVersion(Kernel::HLERequestContext& ctx) {
Module::Module() = default;
Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto frd = std::make_shared<Module>();
std::make_shared<FRD_U>(frd)->InstallAsService(service_manager);
std::make_shared<FRD_A>(frd)->InstallAsService(service_manager);

View file

@ -8,6 +8,10 @@
#include "common/common_types.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FRD {
struct FriendKey {
@ -135,6 +139,6 @@ private:
MyPresence my_presence = {};
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::FRD

View file

@ -853,7 +853,8 @@ FS_USER::FS_USER() : ServiceFramework("fs:USER", 30) {
RegisterHandlers(functions);
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<FS_USER>()->InstallAsService(service_manager);
}
} // namespace Service::FS

View file

@ -7,6 +7,10 @@
#include "common/common_types.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::FS {
class FS_USER final : public ServiceFramework<FS_USER> {
@ -517,6 +521,6 @@ private:
u32 priority = -1; ///< For SetPriority and GetPriority service functions
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::FS

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <vector>
#include "core/core.h"
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/gsp/gsp.h"
@ -23,8 +24,9 @@ void SignalInterrupt(InterruptId interrupt_id) {
return gpu->SignalInterrupt(interrupt_id);
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
auto gpu = std::make_shared<GSP_GPU>();
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto gpu = std::make_shared<GSP_GPU>(system);
gpu->InstallAsService(service_manager);
gsp_gpu = gpu;

View file

@ -11,6 +11,10 @@
#include "core/hle/service/gsp/gsp_gpu.h"
#include "core/hle/service/gsp/gsp_lcd.h"
namespace Core {
class System;
}
namespace Service::GSP {
/**
* Retrieves the framebuffer info stored in the GSP shared memory for the
@ -27,5 +31,5 @@ FrameBufferUpdate* GetFrameBufferInfo(u32 thread_id, u32 screen_index);
*/
void SignalInterrupt(InterruptId interrupt_id);
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::GSP

View file

@ -731,7 +731,7 @@ void GSP_GPU::SetLedForceOff(Kernel::HLERequestContext& ctx) {
u8 state = rp.Pop<u8>();
Core::System::GetInstance().GetSharedPageHandler()->Set3DLed(state);
system.GetSharedPageHandler()->Set3DLed(state);
IPC::RequestBuilder rb = rp.MakeBuilder(1, 0);
rb.Push(RESULT_SUCCESS);
@ -749,7 +749,7 @@ SessionData* GSP_GPU::FindRegisteredThreadData(u32 thread_id) {
return nullptr;
}
GSP_GPU::GSP_GPU() : ServiceFramework("gsp::Gpu", 2) {
GSP_GPU::GSP_GPU(Core::System& system) : ServiceFramework("gsp::Gpu", 2), system(system) {
static const FunctionInfo functions[] = {
{0x00010082, &GSP_GPU::WriteHWRegs, "WriteHWRegs"},
{0x00020084, &GSP_GPU::WriteHWRegsWithMask, "WriteHWRegsWithMask"},

View file

@ -13,6 +13,10 @@
#include "core/hle/result.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class SharedMemory;
} // namespace Kernel
@ -192,7 +196,7 @@ struct SessionData : public Kernel::SessionRequestHandler::SessionDataBase {
class GSP_GPU final : public ServiceFramework<GSP_GPU, SessionData> {
public:
GSP_GPU();
explicit GSP_GPU(Core::System& system);
~GSP_GPU() = default;
void ClientDisconnected(Kernel::SharedPtr<Kernel::ServerSession> server_session) override;
@ -399,6 +403,8 @@ private:
/// Returns the session data for the specified registered thread id, or nullptr if not found.
SessionData* FindRegisteredThreadData(u32 thread_id);
Core::System& system;
/// GSP shared memory
Kernel::SharedPtr<Kernel::SharedMemory> shared_memory;

View file

@ -219,7 +219,7 @@ void Module::UpdateGyroscopeCallback(u64 userdata, s64 cycles_late) {
Math::Vec3<float> gyro;
std::tie(std::ignore, gyro) = motion_device->GetStatus();
double stretch = Core::System::GetInstance().perf_stats.GetLastFrameTimeScale();
double stretch = system.perf_stats.GetLastFrameTimeScale();
gyro *= gyroscope_coef * static_cast<float>(stretch);
gyroscope_entry.x = static_cast<s16>(gyro.x);
gyroscope_entry.y = static_cast<s16>(gyro.y);
@ -354,7 +354,7 @@ void Module::Interface::GetSoundVolume(Kernel::HLERequestContext& ctx) {
Module::Interface::Interface(std::shared_ptr<Module> hid, const char* name, u32 max_session)
: ServiceFramework(name, max_session), hid(std::move(hid)) {}
Module::Module() {
Module::Module(Core::System& system) : system(system) {
using namespace Kernel;
shared_mem =
@ -393,8 +393,9 @@ void ReloadInputDevices() {
hid->ReloadInputDevices();
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
auto hid = std::make_shared<Module>();
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto hid = std::make_shared<Module>(system);
std::make_shared<User>(hid)->InstallAsService(service_manager);
std::make_shared<Spvr>(hid)->InstallAsService(service_manager);
current_module = hid;

View file

@ -18,6 +18,10 @@
#include "core/hle/service/service.h"
#include "core/settings.h"
namespace Core {
class System;
}
namespace Kernel {
class Event;
class SharedMemory;
@ -198,7 +202,7 @@ DirectionState GetStickDirectionState(s16 circle_pad_x, s16 circle_pad_y);
class Module final {
public:
Module();
explicit Module(Core::System& system);
class Interface : public ServiceFramework<Interface> {
public:
@ -299,6 +303,8 @@ private:
void UpdateAccelerometerCallback(u64 userdata, s64 cycles_late);
void UpdateGyroscopeCallback(u64 userdata, s64 cycles_late);
Core::System& system;
// Handle to shared memory region designated to HID_User service
Kernel::SharedPtr<Kernel::SharedMemory> shared_mem;
@ -329,7 +335,7 @@ private:
std::unique_ptr<Input::TouchDevice> touch_device;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
/// Reload input devices. Used when input configuration changed
void ReloadInputDevices();

View file

@ -4,6 +4,7 @@
#include <cryptopp/aes.h>
#include <cryptopp/modes.h>
#include "core/core.h"
#include "core/file_sys/archive_ncch.h"
#include "core/file_sys/file_backend.h"
#include "core/hle/ipc_helpers.h"
@ -581,7 +582,8 @@ HTTP_C::HTTP_C() : ServiceFramework("http:C", 32) {
DecryptClCertA();
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<HTTP_C>()->InstallAsService(service_manager);
}
} // namespace Service::HTTP

View file

@ -12,6 +12,10 @@
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::HTTP {
enum class RequestMethod : u8 {
@ -262,6 +266,6 @@ private:
} ClCertA;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::HTTP

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <memory>
#include "core/core.h"
#include "core/hle/service/ir/ir.h"
#include "core/hle/service/ir/ir_rst.h"
#include "core/hle/service/ir/ir_u.h"
@ -22,7 +23,8 @@ void ReloadInputDevices() {
ir_rst->ReloadInputDevices();
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<IR_U>()->InstallAsService(service_manager);
auto ir_user = std::make_shared<IR_USER>();

View file

@ -4,6 +4,10 @@
#pragma once
namespace Core {
class System;
}
namespace SM {
class ServiceManager;
}
@ -13,6 +17,6 @@ namespace Service::IR {
/// Reload input devices. Used when input configuration changed
void ReloadInputDevices();
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::IR

View file

@ -586,7 +586,8 @@ RO::RO() : ServiceFramework("ldr:ro", 2) {
RegisterHandlers(functions);
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<RO>()->InstallAsService(service_manager);
}

View file

@ -7,6 +7,10 @@
#include "core/hle/service/ldr_ro/memory_synchronizer.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::LDR {
struct ClientSlot : public Kernel::SessionRequestHandler::SessionDataBase {
@ -149,6 +153,6 @@ private:
void Shutdown(Kernel::HLERequestContext& self);
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::LDR

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
@ -290,7 +291,8 @@ MIC_U::MIC_U() : ServiceFramework{"mic:u", 1}, impl{std::make_unique<Impl>()} {
MIC_U::~MIC_U() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<MIC_U>()->InstallAsService(service_manager);
}

View file

@ -8,6 +8,10 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::MIC {
class MIC_U final : public ServiceFramework<MIC_U> {
@ -186,6 +190,6 @@ private:
std::unique_ptr<Impl> impl;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::MIC

View file

@ -2,12 +2,14 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/mvd/mvd.h"
#include "core/hle/service/mvd/mvd_std.h"
namespace Service::MVD {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<MVD_STD>()->InstallAsService(service_manager);
}

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::MVD {
/// Initializes all MVD services.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::MVD

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/service/ndm/ndm_u.h"
@ -236,7 +237,8 @@ NDM_U::NDM_U() : ServiceFramework("ndm:u", 6) {
RegisterHandlers(functions);
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NDM_U>()->InstallAsService(service_manager);
}

View file

@ -7,6 +7,10 @@
#include <array>
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NDM {
class NDM_U final : public ServiceFramework<NDM_U> {
@ -268,6 +272,6 @@ private:
bool daemon_lock_enabled = false;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NDM

View file

@ -3,13 +3,15 @@
// Refer to the license.txt file included.
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/service/news/news_s.h"
#include "core/hle/service/news/news_u.h"
#include "core/hle/service/service.h"
namespace Service::NEWS {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NEWS_S>()->InstallAsService(service_manager);
std::make_shared<NEWS_U>()->InstallAsService(service_manager);
}

View file

@ -4,8 +4,12 @@
#pragma once
namespace Core {
class System;
}
namespace Service::NEWS {
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NEWS

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
#include "core/hle/service/nfc/nfc.h"
@ -148,7 +149,8 @@ Module::Module() {
Module::~Module() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto nfc = std::make_shared<Module>();
std::make_shared<NFC_M>(nfc)->InstallAsService(service_manager);
std::make_shared<NFC_U>(nfc)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/kernel/kernel.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class Event;
} // namespace Kernel
@ -174,6 +178,6 @@ private:
CommunicationStatus nfc_status = CommunicationStatus::NfcInitialized;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NFC

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/nim/nim.h"
#include "core/hle/service/nim/nim_aoc.h"
#include "core/hle/service/nim/nim_s.h"
@ -9,7 +10,8 @@
namespace Service::NIM {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NIM_AOC>()->InstallAsService(service_manager);
std::make_shared<NIM_S>()->InstallAsService(service_manager);
std::make_shared<NIM_U>()->InstallAsService(service_manager);

View file

@ -6,8 +6,12 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NIM {
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NIM

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include <cinttypes>
#include "core/core.h"
#include "core/hle/service/am/am.h"
#include "core/hle/service/ns/ns.h"
#include "core/hle/service/ns/ns_s.h"
@ -30,7 +31,8 @@ Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 tit
return process;
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NS_S>()->InstallAsService(service_manager);
}

View file

@ -8,12 +8,16 @@
#include "core/hle/service/fs/archive.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NS {
/// Loads and launches the title identified by title_id in the specified media type.
Kernel::SharedPtr<Kernel::Process> LaunchTitle(FS::MediaType media_type, u64 title_id);
/// Registers all NS services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NS

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/nwm/nwm.h"
#include "core/hle/service/nwm/nwm_cec.h"
#include "core/hle/service/nwm/nwm_ext.h"
@ -13,14 +14,15 @@
namespace Service::NWM {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<NWM_CEC>()->InstallAsService(service_manager);
std::make_shared<NWM_EXT>()->InstallAsService(service_manager);
std::make_shared<NWM_INF>()->InstallAsService(service_manager);
std::make_shared<NWM_SAP>()->InstallAsService(service_manager);
std::make_shared<NWM_SOC>()->InstallAsService(service_manager);
std::make_shared<NWM_TST>()->InstallAsService(service_manager);
std::make_shared<NWM_UDS>()->InstallAsService(service_manager);
std::make_shared<NWM_UDS>(system)->InstallAsService(service_manager);
}
} // namespace Service::NWM

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::NWM {
/// Initialize all NWM services
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::NWM

View file

@ -1283,7 +1283,7 @@ static void BeaconBroadcastCallback(u64 userdata, s64 cycles_late) {
beacon_broadcast_event, 0);
}
NWM_UDS::NWM_UDS() : ServiceFramework("nwm::UDS") {
NWM_UDS::NWM_UDS(Core::System& system) : ServiceFramework("nwm::UDS") {
static const FunctionInfo functions[] = {
{0x000102C2, nullptr, "Initialize (deprecated)"},
{0x00020000, nullptr, "Scrap"},
@ -1334,9 +1334,8 @@ NWM_UDS::NWM_UDS() : ServiceFramework("nwm::UDS") {
}
}
Core::System::GetInstance().GetSharedPageHandler()->SetMacAddress(mac);
Core::System::GetInstance().GetSharedPageHandler()->SetWifiLinkLevel(
SharedPage::WifiLinkLevel::BEST);
system.GetSharedPageHandler()->SetMacAddress(mac);
system.GetSharedPageHandler()->SetWifiLinkLevel(SharedPage::WifiLinkLevel::BEST);
}
NWM_UDS::~NWM_UDS() {

View file

@ -11,6 +11,10 @@
#include "common/swap.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
// Local-WLAN service
namespace Service::NWM {
@ -98,7 +102,7 @@ enum class TagId : u8 {
class NWM_UDS final : public ServiceFramework<NWM_UDS> {
public:
NWM_UDS();
explicit NWM_UDS(Core::System& system);
~NWM_UDS();
private:

View file

@ -2,13 +2,15 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/pm/pm.h"
#include "core/hle/service/pm/pm_app.h"
#include "core/hle/service/pm/pm_dbg.h"
namespace Service::PM {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<PM_APP>()->InstallAsService(service_manager);
std::make_shared<PM_DBG>()->InstallAsService(service_manager);
}

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PM {
/// Initializes the PM services.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::PM

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/service/ps/ps_ps.h"
@ -32,7 +33,8 @@ PS_PS::PS_PS() : ServiceFramework("ps:ps", DefaultMaxSessions) {
RegisterHandlers(functions);
};
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<PS_PS>()->InstallAsService(service_manager);
}

View file

@ -6,6 +6,10 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PS {
class PS_PS final : public ServiceFramework<PS_PS> {
@ -224,6 +228,6 @@ private:
};
/// Initializes the PS_PS Service
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::PS

View file

@ -6,6 +6,7 @@
#include "common/common_paths.h"
#include "common/file_util.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/file_sys/archive_extsavedata.h"
#include "core/file_sys/errors.h"
#include "core/file_sys/file_backend.h"
@ -226,7 +227,8 @@ void Module::SetPlayCoins(u16 play_coins) {
Module::Interface::Interface(std::shared_ptr<Module> ptm, const char* name, u32 max_session)
: ServiceFramework(name, max_session), ptm(std::move(ptm)) {}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
auto ptm = std::make_shared<Module>();
std::make_shared<PTM_Gets>(ptm)->InstallAsService(service_manager);
std::make_shared<PTM_Play>(ptm)->InstallAsService(service_manager);

View file

@ -9,6 +9,10 @@
#include "core/hle/ipc_helpers.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PTM {
/// Charge levels used by PTM functions
@ -140,6 +144,6 @@ private:
bool pedometer_is_counting = false;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::PTM

View file

@ -2,12 +2,14 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/pxi/dev.h"
#include "core/hle/service/pxi/pxi.h"
namespace Service::PXI {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<DEV>()->InstallAsService(service_manager);
}

View file

@ -6,9 +6,13 @@
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::PXI {
/// Registers all PXI services with the specified service manager.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::PXI

View file

@ -2,6 +2,7 @@
// Licensed under GPLv2 or any later version
// Refer to the license.txt file included.
#include "core/core.h"
#include "core/hle/service/qtm/qtm.h"
#include "core/hle/service/qtm/qtm_c.h"
#include "core/hle/service/qtm/qtm_s.h"
@ -10,7 +11,8 @@
namespace Service::QTM {
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<QTM_C>()->InstallAsService(service_manager);
std::make_shared<QTM_S>()->InstallAsService(service_manager);
std::make_shared<QTM_SP>()->InstallAsService(service_manager);

View file

@ -5,10 +5,13 @@
#pragma once
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::QTM {
/// Initializes all QTM services.
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::QTM

View file

@ -69,15 +69,15 @@ const std::array<ServiceModuleInfo, 40> service_module_map{
{"LDR", 0x00040130'00003702, LDR::InstallInterfaces},
{"PXI", 0x00040130'00001402, PXI::InstallInterfaces},
{"ERR", 0x00040030'00008A02, [](SM::ServiceManager& sm) { ERR::InstallInterfaces(); }},
{"ERR", 0x00040030'00008A02, ERR::InstallInterfaces},
{"AC", 0x00040130'00002402, AC::InstallInterfaces},
{"ACT", 0x00040130'00003802, ACT::InstallInterfaces},
{"AM", 0x00040130'00001502, AM::InstallInterfaces},
{"BOSS", 0x00040130'00003402, BOSS::InstallInterfaces},
{"CAM", 0x00040130'00001602,
[](SM::ServiceManager& sm) {
CAM::InstallInterfaces(sm);
Y2R::InstallInterfaces(sm);
[](Core::System& system) {
CAM::InstallInterfaces(system);
Y2R::InstallInterfaces(system);
}},
{"CECD", 0x00040130'00002602, CECD::InstallInterfaces},
{"CFG", 0x00040130'00001702, CFG::InstallInterfaces},
@ -94,9 +94,9 @@ const std::array<ServiceModuleInfo, 40> service_module_map{
{"NFC", 0x00040130'00004002, NFC::InstallInterfaces},
{"NIM", 0x00040130'00002C02, NIM::InstallInterfaces},
{"NS", 0x00040130'00008002,
[](SM::ServiceManager& sm) {
NS::InstallInterfaces(sm);
APT::InstallInterfaces(sm);
[](Core::System& system) {
NS::InstallInterfaces(system);
APT::InstallInterfaces(system);
}},
{"NWM", 0x00040130'00002D02, NWM::InstallInterfaces},
{"PTM", 0x00040130'00002202, PTM::InstallInterfaces},
@ -235,13 +235,13 @@ static bool AttemptLLE(const ServiceModuleInfo& service_module) {
}
/// Initialize ServiceManager
void Init(std::shared_ptr<SM::ServiceManager>& sm) {
void Init(Core::System& core, std::shared_ptr<SM::ServiceManager>& sm) {
FS::ArchiveInit();
SM::ServiceManager::InstallInterfaces(sm);
for (const auto& service_module : service_module_map) {
if (!AttemptLLE(service_module) && service_module.init_function != nullptr)
service_module.init_function(*sm);
service_module.init_function(core);
}
LOG_DEBUG(Service, "initialized OK");
}

View file

@ -15,8 +15,9 @@
#include "core/hle/kernel/object.h"
#include "core/hle/service/sm/sm.h"
////////////////////////////////////////////////////////////////////////////////////////////////////
// Namespace Service
namespace Core {
class System;
}
namespace Kernel {
class ClientPort;
@ -183,7 +184,7 @@ private:
};
/// Initialize ServiceManager
void Init(std::shared_ptr<SM::ServiceManager>& sm);
void Init(Core::System& system, std::shared_ptr<SM::ServiceManager>& sm);
/// Shutdown ServiceManager
void Shutdown();
@ -194,7 +195,7 @@ extern std::unordered_map<std::string, Kernel::SharedPtr<Kernel::ClientPort>> g_
struct ServiceModuleInfo {
std::string name;
u64 title_id;
std::function<void(SM::ServiceManager&)> init_function;
std::function<void(Core::System&)> init_function;
};
extern const std::array<ServiceModuleInfo, 40> service_module_map;

View file

@ -10,6 +10,7 @@
#include "common/common_types.h"
#include "common/logging/log.h"
#include "common/scope_exit.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/shared_memory.h"
#include "core/hle/result.h"
@ -909,7 +910,8 @@ SOC_U::~SOC_U() {
#endif
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<SOC_U>()->InstallAsService(service_manager);
}

View file

@ -7,6 +7,10 @@
#include <unordered_map>
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::SOC {
/// Holds information about a particular socket
@ -48,6 +52,6 @@ private:
std::unordered_map<u32, SocketHolder> open_sockets;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::SOC

View file

@ -3,6 +3,7 @@
// Refer to the license.txt file included.
#include "common/common_types.h"
#include "core/core.h"
#include "core/hle/ipc.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/service/ssl_c.h"
@ -86,7 +87,8 @@ SSL_C::SSL_C() : ServiceFramework("ssl:C") {
RegisterHandlers(functions);
}
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<SSL_C>()->InstallAsService(service_manager);
}

View file

@ -7,6 +7,10 @@
#include <random>
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Service::SSL {
class SSL_C final : public ServiceFramework<SSL_C> {
@ -21,6 +25,6 @@ private:
std::mt19937 rand_gen;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::SSL

View file

@ -5,6 +5,7 @@
#include <cstring>
#include "common/common_funcs.h"
#include "common/logging/log.h"
#include "core/core.h"
#include "core/hle/ipc_helpers.h"
#include "core/hle/kernel/event.h"
#include "core/hle/kernel/process.h"
@ -686,7 +687,8 @@ Y2R_U::Y2R_U() : ServiceFramework("y2r:u", 1) {
Y2R_U::~Y2R_U() = default;
void InstallInterfaces(SM::ServiceManager& service_manager) {
void InstallInterfaces(Core::System& system) {
auto& service_manager = system.ServiceManager();
std::make_shared<Y2R_U>()->InstallAsService(service_manager);
}

View file

@ -12,6 +12,10 @@
#include "core/hle/result.h"
#include "core/hle/service/service.h"
namespace Core {
class System;
}
namespace Kernel {
class Event;
}
@ -298,6 +302,6 @@ private:
bool spacial_dithering_enabled = false;
};
void InstallInterfaces(SM::ServiceManager& service_manager);
void InstallInterfaces(Core::System& system);
} // namespace Service::Y2R