blob: 27d67893558661020cda814203698c6afb6762c3 [file] [log] [blame]
Francis Murtagh68f78d82019-09-04 16:42:29 +01001//
2// Copyright © 2017 Arm Ltd. All rights reserved.
3// 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>
Francis Murtagh68f78d82019-09-04 16:42:29 +010011
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000012namespace arm
Francis Murtagh68f78d82019-09-04 16:42:29 +010013{
14
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000015namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010016{
17
18class CaptureData
19{
20public:
21 CaptureData()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010022 : m_CapturePeriod(0)
Finn Williams032bc742020-02-12 11:02:34 +000023 , m_CounterIds()
24 , m_ActiveBackends(){}
Cathal Corbett6f073722022-03-04 12:11:09 +000025 CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds, std::set<std::string> activeBackends)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010026 : m_CapturePeriod(capturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000027 , m_CounterIds(counterIds)
28 , m_ActiveBackends(activeBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010029 CaptureData(const CaptureData& captureData)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010030 : m_CapturePeriod(captureData.m_CapturePeriod)
Finn Williams032bc742020-02-12 11:02:34 +000031 , m_CounterIds(captureData.m_CounterIds)
32 , m_ActiveBackends(captureData.m_ActiveBackends){}
Francis Murtagh68f78d82019-09-04 16:42:29 +010033
Matteo Martincighe8485382019-10-10 14:08:21 +010034 CaptureData& operator=(const CaptureData& other);
Francis Murtagh68f78d82019-09-04 16:42:29 +010035
Cathal Corbett6f073722022-03-04 12:11:09 +000036 void SetActiveBackends(const std::set<std::string>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010037 void SetCapturePeriod(uint32_t capturePeriod);
Jim Flynn8355ec92019-09-17 12:29:50 +010038 void SetCounterIds(const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010039 uint32_t GetCapturePeriod() const;
Matteo Martincighe8485382019-10-10 14:08:21 +010040 const std::vector<uint16_t>& GetCounterIds() const;
Cathal Corbett6f073722022-03-04 12:11:09 +000041 const std::set<std::string>& GetActiveBackends() const;
James Conroy2dcd3fe2020-02-06 18:34:52 +000042 bool IsCounterIdInCaptureData(uint16_t counterId);
Francis Murtagh68f78d82019-09-04 16:42:29 +010043
44private:
45 uint32_t m_CapturePeriod;
46 std::vector<uint16_t> m_CounterIds;
Cathal Corbett6f073722022-03-04 12:11:09 +000047 std::set<std::string> m_ActiveBackends;
Francis Murtagh68f78d82019-09-04 16:42:29 +010048};
49
50class Holder
51{
52public:
53 Holder()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010054 : m_CaptureData() {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010055 CaptureData GetCaptureData() const;
Finn Williams032bc742020-02-12 11:02:34 +000056 void SetCaptureData(uint32_t capturePeriod,
57 const std::vector<uint16_t>& counterIds,
Cathal Corbett6f073722022-03-04 12:11:09 +000058 const std::set<std::string>& activeBackends);
Francis Murtagh68f78d82019-09-04 16:42:29 +010059
60private:
Jim Flynn870b96c2022-03-25 21:24:56 +000061#if !defined(ARMNN_DISABLE_THREADS)
Francis Murtagh68f78d82019-09-04 16:42:29 +010062 mutable std::mutex m_CaptureThreadMutex;
Jim Flynn870b96c2022-03-25 21:24:56 +000063#endif
Francis Murtagh68f78d82019-09-04 16:42:29 +010064 CaptureData m_CaptureData;
65};
66
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000067} // namespace pipe
Francis Murtagh68f78d82019-09-04 16:42:29 +010068
Cathal Corbett5aa9fd72022-02-25 15:33:28 +000069} // namespace arm