diff options
author | Zephyron <zephyron@citron-emu.org> | 2025-02-08 19:50:28 +1000 |
---|---|---|
committer | Zephyron <zephyron@citron-emu.org> | 2025-02-08 19:50:28 +1000 |
commit | e3128c6e98c6abfec9a3f2dcf0cee8edc9243828 (patch) | |
tree | 9fcafd3b0f0fe629498c09ef16c87b4eaa658b25 /src/core/hle | |
parent | b89a85e22839a9c8b024520b954767a773e9a8cf (diff) |
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.
Diffstat (limited to 'src/core/hle')
-rw-r--r-- | src/core/hle/service/sm/sm.cpp | 6 | ||||
-rw-r--r-- | src/core/hle/service/sm/sm.h | 2 | ||||
-rw-r--r-- | 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<Controller>(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 <limits> + 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<u16>(pointer_buffer_size); + rb.Push<u16>(MAX_TRANSFER_MEMORY_SIZE); } // https://switchbrew.org/wiki/IPC_Marshalling |