// // Copyright © 2017 Arm Ltd. All rights reserved. // SPDX-License-Identifier: MIT // #pragma once #include #include #include #include "ProfilingUtils.hpp" namespace armnn { namespace profiling { class CaptureData { public: CaptureData() : m_CapturePeriod(0) , m_CounterIds() , m_ActiveBackends(){} CaptureData(uint32_t capturePeriod, std::vector& counterIds, std::set activeBackends) : m_CapturePeriod(capturePeriod) , m_CounterIds(counterIds) , m_ActiveBackends(activeBackends){} CaptureData(const CaptureData& captureData) : m_CapturePeriod(captureData.m_CapturePeriod) , m_CounterIds(captureData.m_CounterIds) , m_ActiveBackends(captureData.m_ActiveBackends){} CaptureData& operator=(const CaptureData& other); void SetActiveBackends(const std::set& activeBackends); void SetCapturePeriod(uint32_t capturePeriod); void SetCounterIds(const std::vector& counterIds); uint32_t GetCapturePeriod() const; const std::vector& GetCounterIds() const; const std::set& GetActiveBackends() const; bool IsCounterIdInCaptureData(uint16_t counterId); private: uint32_t m_CapturePeriod; std::vector m_CounterIds; std::set m_ActiveBackends; }; class Holder { public: Holder() : m_CaptureData() {} CaptureData GetCaptureData() const; void SetCaptureData(uint32_t capturePeriod, const std::vector& counterIds, const std::set& activeBackends); private: mutable std::mutex m_CaptureThreadMutex; CaptureData m_CaptureData; }; } // namespace profiling } // namespace armnn