Support watch() and unwatch() in RDC module framework

The framework now supports watch() and unwatch(), which can be used
by the telemetry library to init events or pre-fetch fields when recording
starts.
* A new header file RdcTelemetryLibInterface.h is defined for library to
  include it.
* The RdcWatchTable will not talk to RdcMetricFetcher directly anymore.
  It will call the framework watch/unwatch to dispatch it to the libraries.
* Make the python binding consistent with the current code.

Change-Id: Ie5731d920ed5928f901369d60c23bd450807a562


[ROCm/rdc commit: 151520b97e]
This commit is contained in:
Bill(Shuzhou) Liu
2020-09-15 14:53:04 -04:00
rodzic fbd87a499f
commit 753d5fed6d
13 zmienionych plików z 266 dodań i 80 usunięć
@@ -24,6 +24,7 @@ THE SOFTWARE.
#include <map>
#include <list>
#include <vector>
#include <memory>
#include "rdc_lib/RdcTelemetry.h"
#include "rdc_lib/impl/RdcRasLib.h"
@@ -49,7 +50,15 @@ class RdcTelemetryModule : public RdcTelemetry {
RdcTelemetryModule(const RdcMetricFetcherPtr& fetcher,
const RdcRasLibPtr& ras_module);
private:
//< Helper function to dispatch fields to module
void get_fields_for_module(
rdc_gpu_field_t* fields,
uint32_t fields_count,
std::map<RdcTelemetryPtr, std::vector<rdc_gpu_field_t>>
& fields_in_module,
std::vector<rdc_gpu_field_value_t>& unsupport_fields); // NOLINT
std::list<RdcTelemetryPtr> telemetry_modules_;
std::map<uint32_t, RdcTelemetryPtr> fields_id_module_;
};