xref: /aosp_15_r20/external/armnn/profiling/client/src/PacketBuffer.cpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
1*89c4ff92SAndroid Build Coastguard Worker //
2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2019 Arm Ltd. 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 #include "PacketBuffer.hpp"
7*89c4ff92SAndroid Build Coastguard Worker 
8*89c4ff92SAndroid Build Coastguard Worker #include <common/include/ProfilingException.hpp>
9*89c4ff92SAndroid Build Coastguard Worker 
10*89c4ff92SAndroid Build Coastguard Worker namespace arm
11*89c4ff92SAndroid Build Coastguard Worker {
12*89c4ff92SAndroid Build Coastguard Worker 
13*89c4ff92SAndroid Build Coastguard Worker namespace pipe
14*89c4ff92SAndroid Build Coastguard Worker {
15*89c4ff92SAndroid Build Coastguard Worker 
PacketBuffer(unsigned int maxSize)16*89c4ff92SAndroid Build Coastguard Worker PacketBuffer::PacketBuffer(unsigned int maxSize)
17*89c4ff92SAndroid Build Coastguard Worker     : m_MaxSize(maxSize)
18*89c4ff92SAndroid Build Coastguard Worker     , m_Size(0)
19*89c4ff92SAndroid Build Coastguard Worker {
20*89c4ff92SAndroid Build Coastguard Worker     m_Data = std::make_unique<unsigned char[]>(m_MaxSize);
21*89c4ff92SAndroid Build Coastguard Worker }
22*89c4ff92SAndroid Build Coastguard Worker 
GetReadableData() const23*89c4ff92SAndroid Build Coastguard Worker const unsigned char* PacketBuffer::GetReadableData() const
24*89c4ff92SAndroid Build Coastguard Worker {
25*89c4ff92SAndroid Build Coastguard Worker     return m_Data.get();
26*89c4ff92SAndroid Build Coastguard Worker }
27*89c4ff92SAndroid Build Coastguard Worker 
GetSize() const28*89c4ff92SAndroid Build Coastguard Worker unsigned int PacketBuffer::GetSize() const
29*89c4ff92SAndroid Build Coastguard Worker {
30*89c4ff92SAndroid Build Coastguard Worker     return m_Size;
31*89c4ff92SAndroid Build Coastguard Worker }
32*89c4ff92SAndroid Build Coastguard Worker 
MarkRead()33*89c4ff92SAndroid Build Coastguard Worker void PacketBuffer::MarkRead()
34*89c4ff92SAndroid Build Coastguard Worker {
35*89c4ff92SAndroid Build Coastguard Worker     m_Size = 0;
36*89c4ff92SAndroid Build Coastguard Worker }
37*89c4ff92SAndroid Build Coastguard Worker 
Commit(unsigned int size)38*89c4ff92SAndroid Build Coastguard Worker void PacketBuffer::Commit(unsigned int size)
39*89c4ff92SAndroid Build Coastguard Worker {
40*89c4ff92SAndroid Build Coastguard Worker     if (size > m_MaxSize)
41*89c4ff92SAndroid Build Coastguard Worker     {
42*89c4ff92SAndroid Build Coastguard Worker         throw arm::pipe::ProfilingException("Cannot commit [" + std::to_string(size) +
43*89c4ff92SAndroid Build Coastguard Worker             "] bytes which is more than the maximum size of the buffer [" + std::to_string(m_MaxSize) + "]");
44*89c4ff92SAndroid Build Coastguard Worker     }
45*89c4ff92SAndroid Build Coastguard Worker     m_Size = size;
46*89c4ff92SAndroid Build Coastguard Worker }
47*89c4ff92SAndroid Build Coastguard Worker 
Release()48*89c4ff92SAndroid Build Coastguard Worker void PacketBuffer::Release()
49*89c4ff92SAndroid Build Coastguard Worker {
50*89c4ff92SAndroid Build Coastguard Worker     m_Size = 0;
51*89c4ff92SAndroid Build Coastguard Worker }
52*89c4ff92SAndroid Build Coastguard Worker 
GetWritableData()53*89c4ff92SAndroid Build Coastguard Worker unsigned char* PacketBuffer::GetWritableData()
54*89c4ff92SAndroid Build Coastguard Worker {
55*89c4ff92SAndroid Build Coastguard Worker     return m_Data.get();
56*89c4ff92SAndroid Build Coastguard Worker }
57*89c4ff92SAndroid Build Coastguard Worker 
Destroy()58*89c4ff92SAndroid Build Coastguard Worker void PacketBuffer::Destroy()
59*89c4ff92SAndroid Build Coastguard Worker {
60*89c4ff92SAndroid Build Coastguard Worker     m_Data.reset(nullptr);
61*89c4ff92SAndroid Build Coastguard Worker     m_Size = 0;
62*89c4ff92SAndroid Build Coastguard Worker     m_MaxSize = 0;
63*89c4ff92SAndroid Build Coastguard Worker }
64*89c4ff92SAndroid Build Coastguard Worker 
65*89c4ff92SAndroid Build Coastguard Worker } // namespace pipe
66*89c4ff92SAndroid Build Coastguard Worker 
67*89c4ff92SAndroid Build Coastguard Worker } // namespace arm
68