• Home
  • Line#
  • Scopes#
  • Navigate#
  • Raw
  • Download
1 //
2 // Copyright © 2019 Arm Ltd. All rights reserved.
3 // SPDX-License-Identifier: MIT
4 //
5 
6 #include "PacketBuffer.hpp"
7 
8 #include <common/include/ProfilingException.hpp>
9 
10 namespace arm
11 {
12 
13 namespace pipe
14 {
15 
PacketBuffer(unsigned int maxSize)16 PacketBuffer::PacketBuffer(unsigned int maxSize)
17     : m_MaxSize(maxSize)
18     , m_Size(0)
19 {
20     m_Data = std::make_unique<unsigned char[]>(m_MaxSize);
21 }
22 
GetReadableData() const23 const unsigned char* PacketBuffer::GetReadableData() const
24 {
25     return m_Data.get();
26 }
27 
GetSize() const28 unsigned int PacketBuffer::GetSize() const
29 {
30     return m_Size;
31 }
32 
MarkRead()33 void PacketBuffer::MarkRead()
34 {
35     m_Size = 0;
36 }
37 
Commit(unsigned int size)38 void PacketBuffer::Commit(unsigned int size)
39 {
40     if (size > m_MaxSize)
41     {
42         throw arm::pipe::ProfilingException("Cannot commit [" + std::to_string(size) +
43             "] bytes which is more than the maximum size of the buffer [" + std::to_string(m_MaxSize) + "]");
44     }
45     m_Size = size;
46 }
47 
Release()48 void PacketBuffer::Release()
49 {
50     m_Size = 0;
51 }
52 
GetWritableData()53 unsigned char* PacketBuffer::GetWritableData()
54 {
55     return m_Data.get();
56 }
57 
Destroy()58 void PacketBuffer::Destroy()
59 {
60     m_Data.reset(nullptr);
61     m_Size = 0;
62     m_MaxSize = 0;
63 }
64 
65 } // namespace pipe
66 
67 } // namespace arm
68