From 61cf14d7cce8897fedbd45422ba2d2b935cc0faf Mon Sep 17 00:00:00 2001 From: "Galantsev, Dmitrii" Date: Mon, 20 Nov 2023 18:08:55 -0600 Subject: [PATCH] Simplify ModuleMgr Change-Id: I3a57876c73e50771fcedb7ca4c67d55ac406b34d Signed-off-by: Galantsev, Dmitrii [ROCm/rdc commit: 95e057c88d8920a9013b6ee2207a00aa717d7d75] --- .../rdc_lib/impl/RdcDiagnosticModule.h | 9 +++----- .../include/rdc_lib/impl/RdcModuleMgrImpl.h | 3 --- projects/rdc/include/rdc_lib/impl/RdcRasLib.h | 2 +- .../rdc/include/rdc_lib/impl/RdcRocrLib.h | 2 +- .../include/rdc_lib/impl/RdcTelemetryModule.h | 3 +-- .../rdc_libs/rdc/src/RdcDiagnosticModule.cc | 13 +++++++---- .../rdc/rdc_libs/rdc/src/RdcModuleMgrImpl.cc | 22 +++---------------- projects/rdc/rdc_libs/rdc/src/RdcRasLib.cc | 4 ++-- projects/rdc/rdc_libs/rdc/src/RdcRocrLib.cc | 4 ++-- .../rdc_libs/rdc/src/RdcTelemetryModule.cc | 11 ++++++---- 10 files changed, 29 insertions(+), 44 deletions(-) diff --git a/projects/rdc/include/rdc_lib/impl/RdcDiagnosticModule.h b/projects/rdc/include/rdc_lib/impl/RdcDiagnosticModule.h index 36cd9748eb..8b7e2a42c8 100644 --- a/projects/rdc/include/rdc_lib/impl/RdcDiagnosticModule.h +++ b/projects/rdc/include/rdc_lib/impl/RdcDiagnosticModule.h @@ -27,9 +27,8 @@ THE SOFTWARE. #include #include #include "rdc_lib/RdcDiagnostic.h" -#include "rdc_lib/impl/RdcRasLib.h" -#include "rdc_lib/impl/RdcSmiLib.h" -#include "rdc_lib/impl/RdcRocrLib.h" +#include "rdc_lib/RdcMetricFetcher.h" +#include "rdc_lib/RdcTelemetryLibInterface.h" namespace amd { namespace rdc { @@ -55,9 +54,7 @@ class RdcDiagnosticModule : public RdcDiagnostic { rdc_status_t rdc_diag_init(uint64_t flags) override; rdc_status_t rdc_diag_destroy() override; - explicit RdcDiagnosticModule(const RdcSmiLibPtr& smi_lib, - const RdcRasLibPtr& ras_module, - const RdcRocrLibPtr& rocr_module); + explicit RdcDiagnosticModule(RdcMetricFetcherPtr& fetcher); private: //< Helper function to dispatch fields to module diff --git a/projects/rdc/include/rdc_lib/impl/RdcModuleMgrImpl.h b/projects/rdc/include/rdc_lib/impl/RdcModuleMgrImpl.h index fe5c625ff9..6cb0b71013 100644 --- a/projects/rdc/include/rdc_lib/impl/RdcModuleMgrImpl.h +++ b/projects/rdc/include/rdc_lib/impl/RdcModuleMgrImpl.h @@ -46,10 +46,7 @@ class RdcModuleMgrImpl : public RdcModuleMgr { RdcDiagnosticPtr rdc_diagnostic_module_; // Domain module - RdcRasLibPtr ras_lib_; - RdcSmiLibPtr smi_lib_; RdcMetricFetcherPtr fetcher_; - RdcRocrLibPtr rocr_lib_; }; } // namespace rdc diff --git a/projects/rdc/include/rdc_lib/impl/RdcRasLib.h b/projects/rdc/include/rdc_lib/impl/RdcRasLib.h index 4864b0bcf1..1e55f50400 100644 --- a/projects/rdc/include/rdc_lib/impl/RdcRasLib.h +++ b/projects/rdc/include/rdc_lib/impl/RdcRasLib.h @@ -71,7 +71,7 @@ class RdcRasLib: public RdcTelemetry, public RdcDiagnostic { rdc_status_t rdc_diag_init(uint64_t flags) override; rdc_status_t rdc_diag_destroy() override; - explicit RdcRasLib(const char* lib_name); + explicit RdcRasLib(); ~RdcRasLib(); diff --git a/projects/rdc/include/rdc_lib/impl/RdcRocrLib.h b/projects/rdc/include/rdc_lib/impl/RdcRocrLib.h index ff89e01d7e..9b28905c4f 100644 --- a/projects/rdc/include/rdc_lib/impl/RdcRocrLib.h +++ b/projects/rdc/include/rdc_lib/impl/RdcRocrLib.h @@ -51,7 +51,7 @@ class RdcRocrLib : public RdcDiagnostic { rdc_status_t rdc_diag_init(uint64_t flags) override; rdc_status_t rdc_diag_destroy() override; - explicit RdcRocrLib(const char* lib_name); + explicit RdcRocrLib(); ~RdcRocrLib(); diff --git a/projects/rdc/include/rdc_lib/impl/RdcTelemetryModule.h b/projects/rdc/include/rdc_lib/impl/RdcTelemetryModule.h index c9255d6043..c195011a5d 100644 --- a/projects/rdc/include/rdc_lib/impl/RdcTelemetryModule.h +++ b/projects/rdc/include/rdc_lib/impl/RdcTelemetryModule.h @@ -49,8 +49,7 @@ class RdcTelemetryModule : public RdcTelemetry { rdc_status_t rdc_telemetry_fields_unwatch(rdc_gpu_field_t* fields, uint32_t fields_count); - RdcTelemetryModule(const RdcSmiLibPtr& smi_lib, - const RdcRasLibPtr& ras_module); + RdcTelemetryModule(RdcMetricFetcherPtr fetcher); private: //< Helper function to dispatch fields to module diff --git a/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc b/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc index b1806e9ded..ef055a6c0e 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcDiagnosticModule.cc @@ -21,11 +21,14 @@ THE SOFTWARE. */ #include "rdc_lib/impl/RdcDiagnosticModule.h" #include +#include #include #include #include "rdc_lib/RdcLogger.h" +#include "rdc_lib/RdcMetricFetcher.h" #include "rdc_lib/impl/RdcSmiLib.h" #include "rdc_lib/impl/RdcRasLib.h" +#include "rdc_lib/impl/RdcRocrLib.h" namespace amd { namespace rdc { @@ -114,10 +117,12 @@ rdc_status_t RdcDiagnosticModule::RdcDiagnosticModule::rdc_diag_destroy() { return RDC_ST_OK; } -RdcDiagnosticModule::RdcDiagnosticModule(const RdcSmiLibPtr& smi_lib, - const RdcRasLibPtr& ras_module, const RdcRocrLibPtr& rocr_module) { - if (smi_lib) { - diagnostic_modules_.push_back(smi_lib); +RdcDiagnosticModule::RdcDiagnosticModule(RdcMetricFetcherPtr& fetcher) { + const RdcSmiLibPtr smi_module = std::make_shared(fetcher); + const RdcRasLibPtr ras_module = std::make_shared(); + const RdcRocrLibPtr rocr_module = std::make_shared(); + if (smi_module) { + diagnostic_modules_.push_back(smi_module); } if (rocr_module) { diagnostic_modules_.push_back(rocr_module); diff --git a/projects/rdc/rdc_libs/rdc/src/RdcModuleMgrImpl.cc b/projects/rdc/rdc_libs/rdc/src/RdcModuleMgrImpl.cc index c61e517bb5..a900dc0504 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcModuleMgrImpl.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcModuleMgrImpl.cc @@ -30,23 +30,16 @@ namespace amd { namespace rdc { RdcModuleMgrImpl::RdcModuleMgrImpl(const RdcMetricFetcherPtr& fetcher) - : smi_lib_(std::make_shared(fetcher)) { - // The smi_lib_ always need to be loaded. -} + : fetcher_(fetcher) {} RdcTelemetryPtr RdcModuleMgrImpl::get_telemetry_module() { if (rdc_telemetry_module_) { return rdc_telemetry_module_; } - // Delay load - if (!ras_lib_) { - ras_lib_.reset(new RdcRasLib("librdc_ras.so")); - } - if (!rdc_telemetry_module_) { rdc_telemetry_module_.reset( - new RdcTelemetryModule(smi_lib_, ras_lib_)); + new RdcTelemetryModule(fetcher_)); } return rdc_telemetry_module_; @@ -57,18 +50,9 @@ RdcDiagnosticPtr RdcModuleMgrImpl::get_diagnostic_module() { return rdc_diagnostic_module_; } - // Delay load - if (!ras_lib_) { - ras_lib_.reset(new RdcRasLib("librdc_ras.so")); - } - - if (!rocr_lib_) { - rocr_lib_.reset(new RdcRocrLib("librdc_rocr.so")); - } - if (!rdc_diagnostic_module_) { rdc_diagnostic_module_.reset( - new RdcDiagnosticModule(smi_lib_, ras_lib_, rocr_lib_)); + new RdcDiagnosticModule(fetcher_)); } return rdc_diagnostic_module_; diff --git a/projects/rdc/rdc_libs/rdc/src/RdcRasLib.cc b/projects/rdc/rdc_libs/rdc/src/RdcRasLib.cc index cca4e2e063..f3e311e956 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcRasLib.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcRasLib.cc @@ -27,14 +27,14 @@ THE SOFTWARE. namespace amd { namespace rdc { -RdcRasLib::RdcRasLib(const char* lib_name): +RdcRasLib::RdcRasLib(): fields_value_get_(nullptr) , fields_query_(nullptr) , fields_watch_(nullptr) , fields_unwatch_(nullptr) , rdc_module_init_(nullptr) , rdc_module_destroy_(nullptr) { - rdc_status_t status = lib_loader_.load(lib_name); + rdc_status_t status = lib_loader_.load("librdc_ras.so"); if (status != RDC_ST_OK) { RDC_LOG(RDC_ERROR, "RAS related function will not work."); return; diff --git a/projects/rdc/rdc_libs/rdc/src/RdcRocrLib.cc b/projects/rdc/rdc_libs/rdc/src/RdcRocrLib.cc index 0133c82474..7a78b59571 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcRocrLib.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcRocrLib.cc @@ -27,12 +27,12 @@ THE SOFTWARE. namespace amd { namespace rdc { -RdcRocrLib::RdcRocrLib(const char* lib_name): +RdcRocrLib::RdcRocrLib(): test_case_run_(nullptr) , diag_test_cases_query_(nullptr) , diag_init_(nullptr) , diag_destroy_(nullptr) { - rdc_status_t status = lib_loader_.load(lib_name); + rdc_status_t status = lib_loader_.load("librdc_rocr.so"); if (status != RDC_ST_OK) { RDC_LOG(RDC_ERROR, "Rocr related function will not work."); return; diff --git a/projects/rdc/rdc_libs/rdc/src/RdcTelemetryModule.cc b/projects/rdc/rdc_libs/rdc/src/RdcTelemetryModule.cc index e89f503837..e05990fb88 100644 --- a/projects/rdc/rdc_libs/rdc/src/RdcTelemetryModule.cc +++ b/projects/rdc/rdc_libs/rdc/src/RdcTelemetryModule.cc @@ -21,7 +21,10 @@ THE SOFTWARE. */ #include "rdc_lib/impl/RdcTelemetryModule.h" #include +#include #include "rdc_lib/RdcLogger.h" +#include "rdc_lib/RdcMetricFetcher.h" +#include "rdc_lib/impl/RdcRasLib.h" #include "rdc_lib/impl/RdcSmiLib.h" namespace amd { @@ -92,10 +95,10 @@ rdc_status_t RdcTelemetryModule::rdc_telemetry_fields_unwatch( return RDC_ST_OK; } -RdcTelemetryModule::RdcTelemetryModule( - const RdcSmiLibPtr& smi_lib, - const RdcRasLibPtr& ras_module) { - telemetry_modules_.push_back(smi_lib); +RdcTelemetryModule::RdcTelemetryModule(RdcMetricFetcherPtr fetcher) { + const RdcSmiLibPtr smi_module = std::make_shared(fetcher); + const RdcRasLibPtr ras_module = std::make_shared(); + telemetry_modules_.push_back(smi_module); if (ras_module) { telemetry_modules_.push_back(ras_module); }