blob: 3143105ab400b753abbfbacd1804d17329b2de40 [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>
10
11namespace armnn
12{
13
14namespace profiling
15{
16
17class CaptureData
18{
19public:
20 CaptureData()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010021 : m_CapturePeriod(0)
22 , m_CounterIds() {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010023 CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010024 : m_CapturePeriod(capturePeriod)
25 , m_CounterIds(counterIds) {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010026 CaptureData(const CaptureData& captureData)
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010027 : m_CapturePeriod(captureData.m_CapturePeriod)
28 , m_CounterIds(captureData.m_CounterIds) {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010029
Matteo Martincighe8485382019-10-10 14:08:21 +010030 CaptureData& operator=(const CaptureData& other);
Francis Murtagh68f78d82019-09-04 16:42:29 +010031
32 void SetCapturePeriod(uint32_t capturePeriod);
Jim Flynn8355ec92019-09-17 12:29:50 +010033 void SetCounterIds(const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010034 uint32_t GetCapturePeriod() const;
Matteo Martincighe8485382019-10-10 14:08:21 +010035 const std::vector<uint16_t>& GetCounterIds() const;
Francis Murtagh68f78d82019-09-04 16:42:29 +010036
37private:
38 uint32_t m_CapturePeriod;
39 std::vector<uint16_t> m_CounterIds;
40};
41
42class Holder
43{
44public:
45 Holder()
Matteo Martincighe0e6efc2019-10-04 17:17:42 +010046 : m_CaptureData() {}
Francis Murtagh68f78d82019-09-04 16:42:29 +010047 CaptureData GetCaptureData() const;
Jim Flynn8355ec92019-09-17 12:29:50 +010048 void SetCaptureData(uint32_t capturePeriod, const std::vector<uint16_t>& counterIds);
Francis Murtagh68f78d82019-09-04 16:42:29 +010049
50private:
51 mutable std::mutex m_CaptureThreadMutex;
52 CaptureData m_CaptureData;
53};
54
55} // namespace profiling
56
57} // namespace armnn