blob: d8d1f5bfb40824a1a7b79f113e9edada07a30b95 [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//
5#pragma once
6
7#include <mutex>
8#include <vector>
9
10namespace armnn
11{
12
13namespace profiling
14{
15
16class CaptureData
17{
18public:
19 CaptureData()
20 : m_CapturePeriod(0), m_CounterIds() {};
21 CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds)
22 : m_CapturePeriod(capturePeriod), m_CounterIds(counterIds) {};
23 CaptureData(const CaptureData& captureData)
24 : m_CapturePeriod(captureData.m_CapturePeriod), m_CounterIds(captureData.m_CounterIds) {};
25
26 CaptureData& operator= (const CaptureData& captureData);
27
28 void SetCapturePeriod(uint32_t capturePeriod);
Jim Flynn8355ec92019-09-17 12:29:50 +010029 void SetCounterIds(const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010030 uint32_t GetCapturePeriod() const;
31 std::vector<uint16_t> GetCounterIds() const;
32
33private:
34 uint32_t m_CapturePeriod;
35 std::vector<uint16_t> m_CounterIds;
36};
37
38class Holder
39{
40public:
41 Holder()
42 : m_CaptureData() {};
43 CaptureData GetCaptureData() const;
Jim Flynn8355ec92019-09-17 12:29:50 +010044 void SetCaptureData(uint32_t capturePeriod, const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010045
46private:
47 mutable std::mutex m_CaptureThreadMutex;
48 CaptureData m_CaptureData;
49};
50
51} // namespace profiling
52
53} // namespace armnn