blob: 8a7ff37bf98299a3fb15b5f8090cc1404bde41df [file] [log] [blame]
Francis Murtaghfcb8ef62019-09-20 15:40:09 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
8#include "Holder.hpp"
9#include "IPeriodicCounterCapture.hpp"
10#include "Packet.hpp"
11#include "IReadCounterValue.hpp"
12#include "SendCounterPacket.hpp"
13
14#include "WallClockTimer.hpp"
15
16#include <atomic>
17#include <chrono>
18#include <mutex>
19#include <thread>
20
21namespace armnn
22{
23
24namespace profiling
25{
26
27class PeriodicCounterCapture final : public IPeriodicCounterCapture
28{
29public:
30 PeriodicCounterCapture(const Holder& data, ISendCounterPacket& packet, const IReadCounterValue& readCounterValue);
31
32 void Start() override;
33 void Join();
34
35private:
36 CaptureData ReadCaptureData();
37 void Functionality(const IReadCounterValue& readCounterValue);
38
39 const Holder& m_CaptureDataHolder;
40 std::atomic<bool> m_IsRunning;
41 std::thread m_PeriodCaptureThread;
42 const IReadCounterValue& m_ReadCounterValue;
43 ISendCounterPacket& m_SendCounterPacket;
44};
45
46} // namespace profiling
47
48} // namespace armnn