Simplify ModuleMgr
Change-Id: I3a57876c73e50771fcedb7ca4c67d55ac406b34d
Signed-off-by: Galantsev, Dmitrii <dmitrii.galantsev@amd.com>
[ROCm/rdc commit: 95e057c88d]
此提交包含在:
@@ -27,9 +27,8 @@ THE SOFTWARE.
|
||||
#include <vector>
|
||||
#include <memory>
|
||||
#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
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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();
|
||||
|
||||
|
||||
@@ -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
|
||||
|
||||
@@ -21,11 +21,14 @@ THE SOFTWARE.
|
||||
*/
|
||||
#include "rdc_lib/impl/RdcDiagnosticModule.h"
|
||||
#include <map>
|
||||
#include <memory>
|
||||
#include <vector>
|
||||
#include <functional>
|
||||
#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<RdcSmiLib>(fetcher);
|
||||
const RdcRasLibPtr ras_module = std::make_shared<RdcRasLib>();
|
||||
const RdcRocrLibPtr rocr_module = std::make_shared<RdcRocrLib>();
|
||||
if (smi_module) {
|
||||
diagnostic_modules_.push_back(smi_module);
|
||||
}
|
||||
if (rocr_module) {
|
||||
diagnostic_modules_.push_back(rocr_module);
|
||||
|
||||
@@ -30,23 +30,16 @@ namespace amd {
|
||||
namespace rdc {
|
||||
|
||||
RdcModuleMgrImpl::RdcModuleMgrImpl(const RdcMetricFetcherPtr& fetcher)
|
||||
: smi_lib_(std::make_shared<RdcSmiLib>(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_;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -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;
|
||||
|
||||
@@ -21,7 +21,10 @@ THE SOFTWARE.
|
||||
*/
|
||||
#include "rdc_lib/impl/RdcTelemetryModule.h"
|
||||
#include <functional>
|
||||
#include <memory>
|
||||
#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<RdcSmiLib>(fetcher);
|
||||
const RdcRasLibPtr ras_module = std::make_shared<RdcRasLib>();
|
||||
telemetry_modules_.push_back(smi_module);
|
||||
if (ras_module) {
|
||||
telemetry_modules_.push_back(ras_module);
|
||||
}
|
||||
|
||||
新增問題並參考
封鎖使用者