aboutsummaryrefslogtreecommitdiff
path: root/profiling/client/include/CounterIdMap.hpp
diff options
context:
space:
mode:
Diffstat (limited to 'profiling/client/include/CounterIdMap.hpp')
-rw-r--r--profiling/client/include/CounterIdMap.hpp51
1 files changed, 51 insertions, 0 deletions
diff --git a/profiling/client/include/CounterIdMap.hpp b/profiling/client/include/CounterIdMap.hpp
new file mode 100644
index 0000000000..cce7184c46
--- /dev/null
+++ b/profiling/client/include/CounterIdMap.hpp
@@ -0,0 +1,51 @@
+//
+// Copyright © 2020 Arm Ltd. All rights reserved.
+// SPDX-License-Identifier: MIT
+//
+#pragma once
+
+#include <map>
+#include <string>
+
+namespace arm
+{
+namespace pipe
+{
+
+class ICounterMappings
+{
+public:
+ virtual uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const = 0;
+ virtual const std::pair<uint16_t, std::string>& GetBackendId(uint16_t globalCounterId) const = 0;
+ virtual ~ICounterMappings() {}
+};
+
+class IRegisterCounterMapping
+{
+public:
+ virtual void RegisterMapping(uint16_t globalCounterId,
+ uint16_t backendCounterId,
+ const std::string& backendId) = 0;
+ virtual void Reset() = 0;
+ virtual ~IRegisterCounterMapping() {}
+};
+
+class CounterIdMap : public ICounterMappings, public IRegisterCounterMapping
+{
+
+public:
+ CounterIdMap() = default;
+ virtual ~CounterIdMap() {}
+ void RegisterMapping(uint16_t globalCounterId,
+ uint16_t backendCounterId,
+ const std::string& backendId) override;
+ void Reset() override;
+ uint16_t GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const override;
+ const std::pair<uint16_t, std::string>& GetBackendId(uint16_t globalCounterId) const override;
+private:
+ std::map<uint16_t, std::pair<uint16_t, std::string>> m_GlobalCounterIdMap;
+ std::map<std::pair<uint16_t, std::string>, uint16_t> m_BackendCounterIdMap;
+};
+
+} // namespace pipe
+} // namespace arm