1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020 Arm Ltd. All rights reserved.
3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT
4*89c4ff92SAndroid Build Coastguard Worker //
5*89c4ff92SAndroid Build Coastguard Worker
6*89c4ff92SAndroid Build Coastguard Worker #include <client/include/CounterIdMap.hpp>
7*89c4ff92SAndroid Build Coastguard Worker
8*89c4ff92SAndroid Build Coastguard Worker #include <common/include/ProfilingException.hpp>
9*89c4ff92SAndroid Build Coastguard Worker
10*89c4ff92SAndroid Build Coastguard Worker #include <map>
11*89c4ff92SAndroid Build Coastguard Worker
12*89c4ff92SAndroid Build Coastguard Worker namespace arm
13*89c4ff92SAndroid Build Coastguard Worker {
14*89c4ff92SAndroid Build Coastguard Worker namespace pipe
15*89c4ff92SAndroid Build Coastguard Worker {
16*89c4ff92SAndroid Build Coastguard Worker
RegisterMapping(uint16_t globalCounterId,uint16_t backendCounterId,const std::string & backendId)17*89c4ff92SAndroid Build Coastguard Worker void CounterIdMap::RegisterMapping(uint16_t globalCounterId,
18*89c4ff92SAndroid Build Coastguard Worker uint16_t backendCounterId,
19*89c4ff92SAndroid Build Coastguard Worker const std::string& backendId)
20*89c4ff92SAndroid Build Coastguard Worker {
21*89c4ff92SAndroid Build Coastguard Worker std::pair<uint16_t, std::string> backendIdPair(backendCounterId, backendId);
22*89c4ff92SAndroid Build Coastguard Worker m_GlobalCounterIdMap[globalCounterId] = backendIdPair;
23*89c4ff92SAndroid Build Coastguard Worker m_BackendCounterIdMap[backendIdPair] = globalCounterId;
24*89c4ff92SAndroid Build Coastguard Worker }
25*89c4ff92SAndroid Build Coastguard Worker
Reset()26*89c4ff92SAndroid Build Coastguard Worker void CounterIdMap::Reset()
27*89c4ff92SAndroid Build Coastguard Worker {
28*89c4ff92SAndroid Build Coastguard Worker m_GlobalCounterIdMap.clear();
29*89c4ff92SAndroid Build Coastguard Worker m_BackendCounterIdMap.clear();
30*89c4ff92SAndroid Build Coastguard Worker }
31*89c4ff92SAndroid Build Coastguard Worker
GetGlobalId(uint16_t backendCounterId,const std::string & backendId) const32*89c4ff92SAndroid Build Coastguard Worker uint16_t CounterIdMap::GetGlobalId(uint16_t backendCounterId, const std::string& backendId) const
33*89c4ff92SAndroid Build Coastguard Worker {
34*89c4ff92SAndroid Build Coastguard Worker std::pair<uint16_t, std::string> backendIdPair(backendCounterId, backendId);
35*89c4ff92SAndroid Build Coastguard Worker auto it = m_BackendCounterIdMap.find(backendIdPair);
36*89c4ff92SAndroid Build Coastguard Worker if (it == m_BackendCounterIdMap.end())
37*89c4ff92SAndroid Build Coastguard Worker {
38*89c4ff92SAndroid Build Coastguard Worker std::stringstream ss;
39*89c4ff92SAndroid Build Coastguard Worker ss << "No Backend Counter [" << backendIdPair.second << ":" << backendIdPair.first << "] registered";
40*89c4ff92SAndroid Build Coastguard Worker throw arm::pipe::ProfilingException(ss.str());
41*89c4ff92SAndroid Build Coastguard Worker }
42*89c4ff92SAndroid Build Coastguard Worker return it->second;
43*89c4ff92SAndroid Build Coastguard Worker }
44*89c4ff92SAndroid Build Coastguard Worker
GetBackendId(uint16_t globalCounterId) const45*89c4ff92SAndroid Build Coastguard Worker const std::pair<uint16_t, std::string>& CounterIdMap::GetBackendId(uint16_t globalCounterId) const
46*89c4ff92SAndroid Build Coastguard Worker {
47*89c4ff92SAndroid Build Coastguard Worker auto it = m_GlobalCounterIdMap.find(globalCounterId);
48*89c4ff92SAndroid Build Coastguard Worker if (it == m_GlobalCounterIdMap.end())
49*89c4ff92SAndroid Build Coastguard Worker {
50*89c4ff92SAndroid Build Coastguard Worker std::stringstream ss;
51*89c4ff92SAndroid Build Coastguard Worker ss << "No Global Counter ID [" << globalCounterId << "] registered";
52*89c4ff92SAndroid Build Coastguard Worker throw arm::pipe::ProfilingException(ss.str());
53*89c4ff92SAndroid Build Coastguard Worker }
54*89c4ff92SAndroid Build Coastguard Worker return it->second;
55*89c4ff92SAndroid Build Coastguard Worker }
56*89c4ff92SAndroid Build Coastguard Worker
57*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe
58*89c4ff92SAndroid Build Coastguard Worker } // namespace arm
59