blob: 80b63a36eb3df370d7744445c088648071d6e83c [file] [log] [blame]
David Monahande803072020-01-30 12:44:23 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5#include "CounterIdMap.hpp"
Jim Flynnf9db3ef2022-03-08 21:23:44 +00006
7#include <common/include/ProfilingException.hpp>
8
Jim Flynn8e0c7a62020-01-30 14:10:55 +00009#include <map>
David Monahande803072020-01-30 12:44:23 +000010
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000011namespace arm
David Monahande803072020-01-30 12:44:23 +000012{
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace pipe
David Monahande803072020-01-30 12:44:23 +000014{
15
16void CounterIdMap::RegisterMapping(uint16_t globalCounterId,
17 uint16_t backendCounterId,
Cathal Corbett6f073722022-03-04 12:11:09 +000018 const std::string& backendId)
David Monahande803072020-01-30 12:44:23 +000019{
Cathal Corbett6f073722022-03-04 12:11:09 +000020 std::pair<uint16_t, std::string> backendIdPair(backendCounterId, backendId);
David Monahande803072020-01-30 12:44:23 +000021 m_GlobalCounterIdMap[globalCounterId] = backendIdPair;
22 m_BackendCounterIdMap[backendIdPair] = globalCounterId;
23}
24
Jim Flynn97897022020-02-02 12:52:59 +000025void CounterIdMap::Reset()
26{
27 m_GlobalCounterIdMap.clear();
28 m_BackendCounterIdMap.clear();
29}
30
Cathal Corbett6f073722022-03-04 12:11:09 +000031uint16_t CounterIdMap::GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const
David Monahande803072020-01-30 12:44:23 +000032{
Cathal Corbett6f073722022-03-04 12:11:09 +000033 std::pair<uint16_t, std::string> backendIdPair(backendCounterId, backendId);
David Monahande803072020-01-30 12:44:23 +000034 auto it = m_BackendCounterIdMap.find(backendIdPair);
35 if (it == m_BackendCounterIdMap.end())
36 {
37 std::stringstream ss;
38 ss << "No Backend Counter [" << backendIdPair.second << ":" << backendIdPair.first << "] registered";
Jim Flynnf9db3ef2022-03-08 21:23:44 +000039 throw arm::pipe::ProfilingException(ss.str());
David Monahande803072020-01-30 12:44:23 +000040 }
41 return it->second;
42}
43
Cathal Corbett6f073722022-03-04 12:11:09 +000044const std::pair<uint16_t, std::string>& CounterIdMap::GetBackendId(uint16_t globalCounterId) const
David Monahande803072020-01-30 12:44:23 +000045{
46 auto it = m_GlobalCounterIdMap.find(globalCounterId);
47 if (it == m_GlobalCounterIdMap.end())
48 {
49 std::stringstream ss;
50 ss << "No Global Counter ID [" << globalCounterId << "] registered";
Jim Flynnf9db3ef2022-03-08 21:23:44 +000051 throw arm::pipe::ProfilingException(ss.str());
David Monahande803072020-01-30 12:44:23 +000052 }
53 return it->second;
54}
55
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000056} // namespace pipe
57} // namespace arm