blob: 1cf339a1e4e1082b0affa31ce58e439606172fc2 [file] [log] [blame]
Francis Murtagh68f78d82019-09-04 16:42:29 +01001//
Teresa Charlinfc5b3842023-04-20 14:27:08 +01002// Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved.
Francis Murtagh68f78d82019-09-04 16:42:29 +01003// SPDX-License-Identifier: MIT
4//
Matteo Martincighe0e6efc2019-10-04 17:17:42 +01005
Francis Murtagh68f78d82019-09-04 16:42:29 +01006#pragma once
7
8#include <mutex>
9#include <vector>
Finn Williams032bc742020-02-12 11:02:34 +000010#include <set>
Teresa Charlinfc5b3842023-04-20 14:27:08 +010011#include <string>
Francis Murtagh68f78d82019-09-04 16:42:29 +010012
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000013namespace arm
Francis Murtagh68f78d82019-09-04 16:42:29 +010014{
15
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000016namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010017{
18
19class CaptureData
20{
21public:
22 CaptureData()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010023 : m_CapturePeriod(0)
Finn Williams032bc742020-02-12 11:02:34 +000024 , m_CounterIds()
25 , m_ActiveBackends(){}
Cathal Corbett6f073722022-03-04 12:11:09 +000026 CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds, std::set<std::string> activeBackends)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010027 : m_CapturePeriod(capturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000028 , m_CounterIds(counterIds)
29 , m_ActiveBackends(activeBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010030 CaptureData(const CaptureData& captureData)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010031 : m_CapturePeriod(captureData.m_CapturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000032 , m_CounterIds(captureData.m_CounterIds)
33 , m_ActiveBackends(captureData.m_ActiveBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010034
Matteo Martincighe8485382019-10-10 14:08:21 +010035 CaptureData& operator=(const CaptureData& other);
Francis Murtagh68f78d82019-09-04 16:42:29 +010036
Cathal Corbett6f073722022-03-04 12:11:09 +000037 void SetActiveBackends(const std::set<std::string>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010038 void SetCapturePeriod(uint32_t capturePeriod);
Jim Flynn8355ec92019-09-17 12:29:50 +010039 void SetCounterIds(const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010040 uint32_t GetCapturePeriod() const;
Matteo Martincighe8485382019-10-10 14:08:21 +010041 const std::vector<uint16_t>& GetCounterIds() const;
Cathal Corbett6f073722022-03-04 12:11:09 +000042 const std::set<std::string>& GetActiveBackends() const;
James Conroy2dcd3fe2020-02-06 18:34:52 +000043 bool IsCounterIdInCaptureData(uint16_t counterId);
Francis Murtagh68f78d82019-09-04 16:42:29 +010044
45private:
46 uint32_t m_CapturePeriod;
47 std::vector<uint16_t> m_CounterIds;
Cathal Corbett6f073722022-03-04 12:11:09 +000048 std::set<std::string> m_ActiveBackends;
Francis Murtagh68f78d82019-09-04 16:42:29 +010049};
50
51class Holder
52{
53public:
54 Holder()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010055 : m_CaptureData() {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010056 CaptureData GetCaptureData() const;
Finn Williams032bc742020-02-12 11:02:34 +000057 void SetCaptureData(uint32_t capturePeriod,
58 const std::vector<uint16_t>& counterIds,
Cathal Corbett6f073722022-03-04 12:11:09 +000059 const std::set<std::string>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010060
61private:
Jim Flynn870b96c2022-03-25 21:24:56 +000062#if !defined(ARMNN_DISABLE_THREADS)
Francis Murtagh68f78d82019-09-04 16:42:29 +010063 mutable std::mutex m_CaptureThreadMutex;
Jim Flynn870b96c2022-03-25 21:24:56 +000064#endif
Francis Murtagh68f78d82019-09-04 16:42:29 +010065 CaptureData m_CaptureData;
66};
67
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000068} // namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010069
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000070} // namespace arm