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 #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <client/include/CounterIdMap.hpp> 9*89c4ff92SAndroid Build Coastguard Worker #include <client/include/IProfilingService.hpp> 10*89c4ff92SAndroid Build Coastguard Worker 11*89c4ff92SAndroid Build Coastguard Worker #include <client/include/backends/IBackendProfiling.hpp> 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker #include <common/include/CounterDirectory.hpp> 14*89c4ff92SAndroid Build Coastguard Worker 15*89c4ff92SAndroid Build Coastguard Worker namespace arm 16*89c4ff92SAndroid Build Coastguard Worker { 17*89c4ff92SAndroid Build Coastguard Worker 18*89c4ff92SAndroid Build Coastguard Worker namespace pipe 19*89c4ff92SAndroid Build Coastguard Worker { 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker class RegisterBackendCounters : public IRegisterBackendCounters 22*89c4ff92SAndroid Build Coastguard Worker { 23*89c4ff92SAndroid Build Coastguard Worker public: 24*89c4ff92SAndroid Build Coastguard Worker RegisterBackendCounters(uint16_t currentMaxGlobalCounterID,const std::string & backendId,IProfilingService & profilingService)25*89c4ff92SAndroid Build Coastguard Worker RegisterBackendCounters( 26*89c4ff92SAndroid Build Coastguard Worker uint16_t currentMaxGlobalCounterID, const std::string& backendId, IProfilingService& profilingService) 27*89c4ff92SAndroid Build Coastguard Worker : m_CurrentMaxGlobalCounterID(currentMaxGlobalCounterID), 28*89c4ff92SAndroid Build Coastguard Worker m_BackendId(backendId), 29*89c4ff92SAndroid Build Coastguard Worker m_ProfilingService(profilingService), 30*89c4ff92SAndroid Build Coastguard Worker m_CounterDirectory(m_ProfilingService.GetCounterRegistry()) {} 31*89c4ff92SAndroid Build Coastguard Worker 32*89c4ff92SAndroid Build Coastguard Worker ~RegisterBackendCounters() = default; 33*89c4ff92SAndroid Build Coastguard Worker 34*89c4ff92SAndroid Build Coastguard Worker void RegisterCategory(const std::string& categoryName) override; 35*89c4ff92SAndroid Build Coastguard Worker 36*89c4ff92SAndroid Build Coastguard Worker uint16_t RegisterDevice(const std::string& deviceName, 37*89c4ff92SAndroid Build Coastguard Worker uint16_t cores = 0, 38*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName = 39*89c4ff92SAndroid Build Coastguard Worker arm::pipe::EmptyOptional()) override; 40*89c4ff92SAndroid Build Coastguard Worker 41*89c4ff92SAndroid Build Coastguard Worker uint16_t RegisterCounterSet(const std::string& counterSetName, 42*89c4ff92SAndroid Build Coastguard Worker uint16_t count = 0, 43*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName 44*89c4ff92SAndroid Build Coastguard Worker = arm::pipe::EmptyOptional()) override; 45*89c4ff92SAndroid Build Coastguard Worker 46*89c4ff92SAndroid Build Coastguard Worker uint16_t RegisterCounter(const uint16_t uid, 47*89c4ff92SAndroid Build Coastguard Worker const std::string& parentCategoryName, 48*89c4ff92SAndroid Build Coastguard Worker uint16_t counterClass, 49*89c4ff92SAndroid Build Coastguard Worker uint16_t interpolation, 50*89c4ff92SAndroid Build Coastguard Worker double multiplier, 51*89c4ff92SAndroid Build Coastguard Worker const std::string& name, 52*89c4ff92SAndroid Build Coastguard Worker const std::string& description, 53*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(), 54*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(), 55*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(), 56*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) override; 57*89c4ff92SAndroid Build Coastguard Worker 58*89c4ff92SAndroid Build Coastguard Worker private: 59*89c4ff92SAndroid Build Coastguard Worker uint16_t m_CurrentMaxGlobalCounterID; 60*89c4ff92SAndroid Build Coastguard Worker const std::string& m_BackendId; 61*89c4ff92SAndroid Build Coastguard Worker IProfilingService& m_ProfilingService; 62*89c4ff92SAndroid Build Coastguard Worker ICounterRegistry& m_CounterDirectory; 63*89c4ff92SAndroid Build Coastguard Worker }; 64*89c4ff92SAndroid Build Coastguard Worker 65*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 66*89c4ff92SAndroid Build Coastguard Worker 67*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 68