blob: a851c6b3f332a978d4db7666e4dc3282a4318710 [file] [log] [blame]
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
Matteo Martincighe0e6efc2019-10-04 17:17:42 +01005
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +01006#pragma once
7
8#include <cstdint>
9
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000010namespace arm
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010011{
12
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace pipe
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010014{
15
16class IReadCounterValues
17{
18public:
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010019 virtual ~IReadCounterValues() {}
Matteo Martincigha84edee2019-10-02 12:50:57 +010020
Matteo Martincighe8485382019-10-10 14:08:21 +010021 virtual bool IsCounterRegistered(uint16_t counterUid) const = 0;
Jim Flynn34430252022-03-04 15:03:58 +000022 virtual bool IsCounterRegistered(const std::string& counterName) const = 0;
Matteo Martincigha84edee2019-10-02 12:50:57 +010023 virtual uint16_t GetCounterCount() const = 0;
Finn Williamsf3fcf322020-05-11 14:38:02 +010024 virtual uint32_t GetAbsoluteCounterValue(uint16_t counterUid) const = 0;
25 virtual uint32_t GetDeltaCounterValue(uint16_t counterUid) = 0;
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010026};
27
Matteo Martincigha84edee2019-10-02 12:50:57 +010028class IWriteCounterValues
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010029{
30public:
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010031 virtual ~IWriteCounterValues() {}
Matteo Martincigha84edee2019-10-02 12:50:57 +010032
33 virtual void SetCounterValue(uint16_t counterUid, uint32_t value) = 0;
34 virtual uint32_t AddCounterValue(uint16_t counterUid, uint32_t value) = 0;
35 virtual uint32_t SubtractCounterValue(uint16_t counterUid, uint32_t value) = 0;
36 virtual uint32_t IncrementCounterValue(uint16_t counterUid) = 0;
Matteo Martincigha84edee2019-10-02 12:50:57 +010037};
38
39class IReadWriteCounterValues : public IReadCounterValues, public IWriteCounterValues
40{
41public:
42 virtual ~IReadWriteCounterValues() {}
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010043};
44
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000045} // namespace pipe
FinnWilliamsArmf6e534a2019-09-16 15:45:42 +010046
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000047} // namespace arm