1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2017, 2023 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <mutex> 9*89c4ff92SAndroid Build Coastguard Worker #include <vector> 10*89c4ff92SAndroid Build Coastguard Worker #include <set> 11*89c4ff92SAndroid Build Coastguard Worker #include <string> 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker namespace arm 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker namespace pipe 17*89c4ff92SAndroid Build Coastguard Worker { 18*89c4ff92SAndroid Build Coastguard Worker 19*89c4ff92SAndroid Build Coastguard Worker class CaptureData 20*89c4ff92SAndroid Build Coastguard Worker { 21*89c4ff92SAndroid Build Coastguard Worker public: CaptureData()22*89c4ff92SAndroid Build Coastguard Worker CaptureData() 23*89c4ff92SAndroid Build Coastguard Worker : m_CapturePeriod(0) 24*89c4ff92SAndroid Build Coastguard Worker , m_CounterIds() 25*89c4ff92SAndroid Build Coastguard Worker , m_ActiveBackends(){} CaptureData(uint32_t capturePeriod,std::vector<uint16_t> & counterIds,std::set<std::string> activeBackends)26*89c4ff92SAndroid Build Coastguard Worker CaptureData(uint32_t capturePeriod, std::vector<uint16_t>& counterIds, std::set<std::string> activeBackends) 27*89c4ff92SAndroid Build Coastguard Worker : m_CapturePeriod(capturePeriod) 28*89c4ff92SAndroid Build Coastguard Worker , m_CounterIds(counterIds) 29*89c4ff92SAndroid Build Coastguard Worker , m_ActiveBackends(activeBackends){} CaptureData(const CaptureData & captureData)30*89c4ff92SAndroid Build Coastguard Worker CaptureData(const CaptureData& captureData) 31*89c4ff92SAndroid Build Coastguard Worker : m_CapturePeriod(captureData.m_CapturePeriod) 32*89c4ff92SAndroid Build Coastguard Worker , m_CounterIds(captureData.m_CounterIds) 33*89c4ff92SAndroid Build Coastguard Worker , m_ActiveBackends(captureData.m_ActiveBackends){} 34*89c4ff92SAndroid Build Coastguard Worker 35*89c4ff92SAndroid Build Coastguard Worker CaptureData& operator=(const CaptureData& other); 36*89c4ff92SAndroid Build Coastguard Worker 37*89c4ff92SAndroid Build Coastguard Worker void SetActiveBackends(const std::set<std::string>& activeBackends); 38*89c4ff92SAndroid Build Coastguard Worker void SetCapturePeriod(uint32_t capturePeriod); 39*89c4ff92SAndroid Build Coastguard Worker void SetCounterIds(const std::vector<uint16_t>& counterIds); 40*89c4ff92SAndroid Build Coastguard Worker uint32_t GetCapturePeriod() const; 41*89c4ff92SAndroid Build Coastguard Worker const std::vector<uint16_t>& GetCounterIds() const; 42*89c4ff92SAndroid Build Coastguard Worker const std::set<std::string>& GetActiveBackends() const; 43*89c4ff92SAndroid Build Coastguard Worker bool IsCounterIdInCaptureData(uint16_t counterId); 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker private: 46*89c4ff92SAndroid Build Coastguard Worker uint32_t m_CapturePeriod; 47*89c4ff92SAndroid Build Coastguard Worker std::vector<uint16_t> m_CounterIds; 48*89c4ff92SAndroid Build Coastguard Worker std::set<std::string> m_ActiveBackends; 49*89c4ff92SAndroid Build Coastguard Worker }; 50*89c4ff92SAndroid Build Coastguard Worker 51*89c4ff92SAndroid Build Coastguard Worker class Holder 52*89c4ff92SAndroid Build Coastguard Worker { 53*89c4ff92SAndroid Build Coastguard Worker public: Holder()54*89c4ff92SAndroid Build Coastguard Worker Holder() 55*89c4ff92SAndroid Build Coastguard Worker : m_CaptureData() {} 56*89c4ff92SAndroid Build Coastguard Worker CaptureData GetCaptureData() const; 57*89c4ff92SAndroid Build Coastguard Worker void SetCaptureData(uint32_t capturePeriod, 58*89c4ff92SAndroid Build Coastguard Worker const std::vector<uint16_t>& counterIds, 59*89c4ff92SAndroid Build Coastguard Worker const std::set<std::string>& activeBackends); 60*89c4ff92SAndroid Build Coastguard Worker 61*89c4ff92SAndroid Build Coastguard Worker private: 62*89c4ff92SAndroid Build Coastguard Worker #if !defined(ARMNN_DISABLE_THREADS) 63*89c4ff92SAndroid Build Coastguard Worker mutable std::mutex m_CaptureThreadMutex; 64*89c4ff92SAndroid Build Coastguard Worker #endif 65*89c4ff92SAndroid Build Coastguard Worker CaptureData m_CaptureData; 66*89c4ff92SAndroid Build Coastguard Worker }; 67*89c4ff92SAndroid Build Coastguard Worker 68*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe 69*89c4ff92SAndroid Build Coastguard Worker 70*89c4ff92SAndroid Build Coastguard Worker } // namespace arm 71