blob: 5c34e7a3debd3221f60bf5d98f3e3cceca99ec67 [file] [log] [blame]
Jim Flynn97897022020-02-02 12:52:59 +00001//
2// Copyright © 2020 Arm Ltd. All rights reserved.
3// 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
16class ICounterRegistry
17{
18public:
19 virtual ~ICounterRegistry() {}
20
21 // Register profiling objects
Sadik Armagan4c998992020-02-25 12:44:44 +000022 virtual const Category* RegisterCategory (const std::string& categoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000023
24 virtual const Device* RegisterDevice (const std::string& deviceName,
25 uint16_t cores,
Jim Flynndecd08b2022-03-13 22:35:46 +000026 const arm::pipe::Optional<std::string>& parentCategoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000027
28 virtual const CounterSet* RegisterCounterSet(const std::string& counterSetName,
29 uint16_t count,
Jim Flynndecd08b2022-03-13 22:35:46 +000030 const arm::pipe::Optional<std::string>& parentCategoryName) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000031
Cathal Corbett6f073722022-03-04 12:11:09 +000032 virtual const Counter* RegisterCounter(const std::string& backendId,
Jim Flynndecd08b2022-03-13 22:35:46 +000033 const uint16_t uid,
34 const std::string& parentCategoryName,
35 uint16_t counterClass,
36 uint16_t interpolation,
37 double multiplier,
38 const std::string& name,
39 const std::string& description,
40 const arm::pipe::Optional<std::string>& units = arm::pipe::EmptyOptional(),
41 const arm::pipe::Optional<uint16_t>& numberOfCores = arm::pipe::EmptyOptional(),
42 const arm::pipe::Optional<uint16_t>& deviceUid = arm::pipe::EmptyOptional(),
43 const arm::pipe::Optional<uint16_t>& counterSetUid = arm::pipe::EmptyOptional()) = 0;
Jim Flynn97897022020-02-02 12:52:59 +000044
45};
46
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000047} // namespace pipe
Jim Flynn97897022020-02-02 12:52:59 +000048
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000049} // namespace arm