1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2020,2022 Arm Ltd and Contributors. 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 <common/include/Optional.hpp> 9*89c4ff92SAndroid Build Coastguard Worker 10*89c4ff92SAndroid Build Coastguard Worker namespace arm 11*89c4ff92SAndroid Build Coastguard Worker { 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker namespace pipe 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker class Category; 17*89c4ff92SAndroid Build Coastguard Worker class Device; 18*89c4ff92SAndroid Build Coastguard Worker class CounterSet; 19*89c4ff92SAndroid Build Coastguard Worker class Counter; 20*89c4ff92SAndroid Build Coastguard Worker 21*89c4ff92SAndroid Build Coastguard Worker class ICounterRegistry 22*89c4ff92SAndroid Build Coastguard Worker { 23*89c4ff92SAndroid Build Coastguard Worker public: ~ICounterRegistry()24*89c4ff92SAndroid Build Coastguard Worker virtual ~ICounterRegistry() {} 25*89c4ff92SAndroid Build Coastguard Worker 26*89c4ff92SAndroid Build Coastguard Worker // Register profiling objects 27*89c4ff92SAndroid Build Coastguard Worker virtual const Category* RegisterCategory (const std::string& categoryName) = 0; 28*89c4ff92SAndroid Build Coastguard Worker 29*89c4ff92SAndroid Build Coastguard Worker virtual const Device* RegisterDevice (const std::string& deviceName, 30*89c4ff92SAndroid Build Coastguard Worker uint16_t cores, 31*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName) = 0; 32*89c4ff92SAndroid Build Coastguard Worker 33*89c4ff92SAndroid Build Coastguard Worker virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName, 34*89c4ff92SAndroid Build Coastguard Worker uint16_t count, 35*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& parentCategoryName) = 0; 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker virtual const Counter* RegisterCounter(const std::string& backendId, 38*89c4ff92SAndroid Build Coastguard Worker const uint16_t uid, 39*89c4ff92SAndroid Build Coastguard Worker const std::string& parentCategoryName, 40*89c4ff92SAndroid Build Coastguard Worker uint16_t counterClass, 41*89c4ff92SAndroid Build Coastguard Worker uint16_t interpolation, 42*89c4ff92SAndroid Build Coastguard Worker double multiplier, 43*89c4ff92SAndroid Build Coastguard Worker const std::string& name, 44*89c4ff92SAndroid Build Coastguard Worker const std::string& description, 45*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(), 46*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(), 47*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(), 48*89c4ff92SAndroid Build Coastguard Worker const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) = 0; 49*89c4ff92SAndroid Build Coastguard Worker 50*89c4ff92SAndroid Build Coastguard Worker }; 51*89c4ff92SAndroid Build Coastguard Worker 52*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 53*89c4ff92SAndroid Build Coastguard Worker 54*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 55