blob: f7e9d38eeb56817302595aad774be35a97a6fed3 [file] [log] [blame]
Jim Flynn97897022020-02-02 12:52:59 +00001//
Colm Donelana98e79a2022-12-06 21:32:29 +00002// Copyright © 2020,2022 Arm Ltd and Contributors. All rights reserved.
Jim Flynn97897022020-02-02 12:52:59 +00003// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Jim Flynndecd08b2022-03-13 22:35:46 +00008#include <common/include/Optional.hpp>
Jim Flynn97897022020-02-02 12:52:59 +00009
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000010namespace arm
Jim Flynn97897022020-02-02 12:52:59 +000011{
12
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000014{
15
Colm Donelana98e79a2022-12-06 21:32:29 +000016class Category;
17class Device;
18class CounterSet;
19class Counter;
20
Jim Flynn97897022020-02-02 12:52:59 +000021class ICounterRegistry
22{
23public:
24 virtual ~ICounterRegistry() {}
25
26 // Register profiling objects
Sadik Armagan4c998992020-02-25 12:44:44 +000027 virtual const Category* RegisterCategory (const std::string& categoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000028
29 virtual const Device* RegisterDevice (const std::string& deviceName,
30 uint16_t cores,
Jim Flynndecd08b2022-03-13 22:35:46 +000031 const arm::pipe::Optional<std::string>& parentCategoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000032
33 virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName,
34 uint16_t count,
Jim Flynndecd08b2022-03-13 22:35:46 +000035 const arm::pipe::Optional<std::string>& parentCategoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000036
Cathal Corbett6f073722022-03-04 12:11:09 +000037 virtual const Counter* RegisterCounter(const std::string& backendId,
Jim Flynndecd08b2022-03-13 22:35:46 +000038 const uint16_t uid,
39 const std::string& parentCategoryName,
40 uint16_t counterClass,
41 uint16_t interpolation,
42 double multiplier,
43 const std::string& name,
44 const std::string& description,
45 const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(),
46 const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(),
47 const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(),
48 const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000049
50};
51
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000052} // namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000053
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000054} // namespace arm