xref: /aosp_15_r20/external/armnn/profiling/client/include/Holder.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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