Ver código fonte

ns: rewrite IVulnerabilityManagerInterface

Liam 2 anos atrás
pai
commit
626f2e65b1

+ 2 - 0
src/core/CMakeLists.txt

@@ -769,6 +769,8 @@ add_library(core STATIC
     hle/service/ns/read_only_application_control_data_interface.h
     hle/service/ns/read_only_application_record_interface.cpp
     hle/service/ns/read_only_application_record_interface.h
+    hle/service/ns/vulnerability_manager_interface.cpp
+    hle/service/ns/vulnerability_manager_interface.h
     hle/service/nvdrv/core/container.cpp
     hle/service/nvdrv/core/container.h
     hle/service/nvdrv/core/heap_mapper.cpp

+ 3 - 25
src/core/hle/service/ns/ns.cpp

@@ -26,6 +26,7 @@
 #include "core/hle/service/ns/platform_service_manager.h"
 #include "core/hle/service/ns/read_only_application_control_data_interface.h"
 #include "core/hle/service/ns/read_only_application_record_interface.h"
+#include "core/hle/service/ns/vulnerability_manager_interface.h"
 #include "core/hle/service/server_manager.h"
 #include "core/hle/service/set/settings_server.h"
 
@@ -601,30 +602,6 @@ private:
     }
 };
 
-class NS_VM final : public ServiceFramework<NS_VM> {
-public:
-    explicit NS_VM(Core::System& system_) : ServiceFramework{system_, "ns:vm"} {
-        // clang-format off
-        static const FunctionInfo functions[] = {
-            {1200, &NS_VM::NeedsUpdateVulnerability, "NeedsUpdateVulnerability"},
-            {1201, nullptr, "UpdateSafeSystemVersionForDebug"},
-            {1202, nullptr, "GetSafeSystemVersion"},
-        };
-        // clang-format on
-
-        RegisterHandlers(functions);
-    }
-
-private:
-    void NeedsUpdateVulnerability(HLERequestContext& ctx) {
-        LOG_WARNING(Service_NS, "(STUBBED) called");
-
-        IPC::ResponseBuilder rb{ctx, 3};
-        rb.Push(ResultSuccess);
-        rb.Push(false);
-    }
-};
-
 void LoopProcess(Core::System& system) {
     auto server_manager = std::make_unique<ServerManager>(system);
 
@@ -637,7 +614,8 @@ void LoopProcess(Core::System& system) {
 
     server_manager->RegisterNamedService("ns:dev", std::make_shared<NS_DEV>(system));
     server_manager->RegisterNamedService("ns:su", std::make_shared<NS_SU>(system));
-    server_manager->RegisterNamedService("ns:vm", std::make_shared<NS_VM>(system));
+    server_manager->RegisterNamedService("ns:vm",
+                                         std::make_shared<IVulnerabilityManagerInterface>(system));
     server_manager->RegisterNamedService("pdm:qry", std::make_shared<PDM_QRY>(system));
 
     server_manager->RegisterNamedService("pl:s",

+ 31 - 0
src/core/hle/service/ns/vulnerability_manager_interface.cpp

@@ -0,0 +1,31 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#include "core/hle/service/cmif_serialization.h"
+#include "core/hle/service/ns/vulnerability_manager_interface.h"
+
+namespace Service::NS {
+
+IVulnerabilityManagerInterface::IVulnerabilityManagerInterface(Core::System& system_)
+    : ServiceFramework{system_, "ns:vm"} {
+    // clang-format off
+    static const FunctionInfo functions[] = {
+        {1200, D<&IVulnerabilityManagerInterface::NeedsUpdateVulnerability>, "NeedsUpdateVulnerability"},
+        {1201, nullptr, "UpdateSafeSystemVersionForDebug"},
+        {1202, nullptr, "GetSafeSystemVersion"},
+    };
+    // clang-format on
+
+    RegisterHandlers(functions);
+}
+
+IVulnerabilityManagerInterface::~IVulnerabilityManagerInterface() = default;
+
+Result IVulnerabilityManagerInterface::NeedsUpdateVulnerability(
+    Out<bool> out_needs_update_vulnerability) {
+    LOG_WARNING(Service_NS, "(STUBBED) called");
+    *out_needs_update_vulnerability = false;
+    R_SUCCEED();
+}
+
+} // namespace Service::NS

+ 21 - 0
src/core/hle/service/ns/vulnerability_manager_interface.h

@@ -0,0 +1,21 @@
+// SPDX-FileCopyrightText: Copyright 2024 yuzu Emulator Project
+// SPDX-License-Identifier: GPL-2.0-or-later
+
+#pragma once
+
+#include "core/hle/service/cmif_types.h"
+#include "core/hle/service/service.h"
+
+namespace Service::NS {
+
+class IVulnerabilityManagerInterface final
+    : public ServiceFramework<IVulnerabilityManagerInterface> {
+public:
+    explicit IVulnerabilityManagerInterface(Core::System& system_);
+    ~IVulnerabilityManagerInterface() override;
+
+private:
+    Result NeedsUpdateVulnerability(Out<bool> out_needs_update_vulnerability);
+};
+
+} // namespace Service::NS