From e3128c6e98c6abfec9a3f2dcf0cee8edc9243828 Mon Sep 17 00:00:00 2001 From: Zephyron Date: Sat, 8 Feb 2025 19:50:28 +1000 Subject: [PATCH] service/sm: improve service manager implementation - Reorder error codes to match numerical order - Rename RegisterClient to Initialize in service registration to match actual function name - Update function declaration order in header to match implementation - Improve QueryPointerBufferSize implementation: * Add proper documentation comment * Use constexpr for maximum transfer memory size * Use std::numeric_limits where appropriate * Improve debug logging message * Use meaningful constant name These changes improve code organization and clarity while making the service manager interface more consistent with Nintendo's official naming conventions. --- src/core/hle/service/sm/sm.cpp | 6 +++--- src/core/hle/service/sm/sm.h | 2 +- src/core/hle/service/sm/sm_controller.cpp | 8 +++++--- 3 files changed, 9 insertions(+), 7 deletions(-) diff --git a/src/core/hle/service/sm/sm.cpp b/src/core/hle/service/sm/sm.cpp index 8a92d9146..fe951298d 100644 --- a/src/core/hle/service/sm/sm.cpp +++ b/src/core/hle/service/sm/sm.cpp @@ -18,11 +18,11 @@ namespace Service::SM { +[[maybe_unused]] constexpr Result ResultNotAllowed(ErrorModule::SM, 1); constexpr Result ResultInvalidClient(ErrorModule::SM, 2); constexpr Result ResultAlreadyRegistered(ErrorModule::SM, 4); constexpr Result ResultInvalidServiceName(ErrorModule::SM, 6); constexpr Result ResultNotRegistered(ErrorModule::SM, 7); -[[maybe_unused]] constexpr Result ResultNotAllowed(ErrorModule::SM, 1); ServiceManager::ServiceManager(Kernel::KernelCore& kernel_) : kernel{kernel_} { controller_interface = std::make_unique(kernel.System()); @@ -282,14 +282,14 @@ SM::SM(ServiceManager& service_manager_, Core::System& system_) : ServiceFramework{system_, "sm:", 4}, service_manager{service_manager_}, kernel{system_.Kernel()} { RegisterHandlers({ - {0, &SM::RegisterClient, "RegisterClient"}, + {0, &SM::Initialize, "Initialize"}, {1, &SM::GetServiceCmif, "GetService"}, {2, &SM::RegisterServiceCmif, "RegisterService"}, {3, &SM::UnregisterService, "UnregisterService"}, {4, &SM::DetachClient, "DetachClient"}, }); RegisterHandlersTipc({ - {0, &SM::RegisterClient, "RegisterClient"}, + {0, &SM::Initialize, "Initialize"}, {1, &SM::GetServiceTipc, "GetService"}, {2, &SM::RegisterServiceTipc, "RegisterService"}, {3, &SM::UnregisterService, "UnregisterService"}, diff --git a/src/core/hle/service/sm/sm.h b/src/core/hle/service/sm/sm.h index d73eac08e..162189d66 100644 --- a/src/core/hle/service/sm/sm.h +++ b/src/core/hle/service/sm/sm.h @@ -38,8 +38,8 @@ public: ~SM() override; private: - void RegisterClient(HLERequestContext& ctx); void Initialize(HLERequestContext& ctx); + void RegisterClient(HLERequestContext& ctx); void GetServiceCmif(HLERequestContext& ctx); void GetServiceTipc(HLERequestContext& ctx); void RegisterServiceCmif(HLERequestContext& ctx); diff --git a/src/core/hle/service/sm/sm_controller.cpp b/src/core/hle/service/sm/sm_controller.cpp index 60e1980b2..2d3f17e55 100644 --- a/src/core/hle/service/sm/sm_controller.cpp +++ b/src/core/hle/service/sm/sm_controller.cpp @@ -13,6 +13,8 @@ #include "core/hle/service/server_manager.h" #include "core/hle/service/sm/sm_controller.h" +#include + namespace Service::SM { void Controller::ConvertCurrentObjectToDomain(HLERequestContext& ctx) { @@ -68,13 +70,13 @@ void Controller::CloneCurrentObjectEx(HLERequestContext& ctx) { } void Controller::QueryPointerBufferSize(HLERequestContext& ctx) { - LOG_DEBUG(Service, "called"); + LOG_DEBUG(Service, "Querying maximum pointer buffer size"); - u16 pointer_buffer_size = 0x8000; // Replace with the actual size if known + constexpr u16 MAX_TRANSFER_MEMORY_SIZE = 0xFFFF; IPC::ResponseBuilder rb{ctx, 3}; rb.Push(ResultSuccess); - rb.Push(pointer_buffer_size); + rb.Push(MAX_TRANSFER_MEMORY_SIZE); } // https://switchbrew.org/wiki/IPC_Marshalling