diff options
Diffstat (limited to 'src/profiling/PacketBuffer.cpp')
-rw-r--r-- | src/profiling/PacketBuffer.cpp | 60 |
1 files changed, 60 insertions, 0 deletions
diff --git a/src/profiling/PacketBuffer.cpp b/src/profiling/PacketBuffer.cpp new file mode 100644 index 0000000000..88133d7674 --- /dev/null +++ b/src/profiling/PacketBuffer.cpp @@ -0,0 +1,60 @@ +// +// Copyright © 2019 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#include "PacketBuffer.hpp" + +#include <armnn/Exceptions.hpp> + +namespace armnn +{ + +namespace profiling +{ + +PacketBuffer::PacketBuffer(unsigned int maxSize) + : m_MaxSize(maxSize) + , m_Size(0) +{ + m_Data = std::make_unique<unsigned char[]>(m_MaxSize); +} + +const unsigned char* const PacketBuffer::GetReadableData() const +{ + return m_Data.get(); +} + +unsigned int PacketBuffer::GetSize() const +{ + return m_Size; +} + +void PacketBuffer::MarkRead() +{ + m_Size = 0; +} + +void PacketBuffer::Commit(unsigned int size) +{ + if (size > m_MaxSize) + { + throw armnn::RuntimeException("Cannot commit [" + std::to_string(size) + + "] bytes which is more than the maximum size of the buffer [" + std::to_string(m_MaxSize) + "]"); + } + m_Size = size; +} + +void PacketBuffer::Release() +{ + m_Size = 0; +} + +unsigned char* PacketBuffer::GetWritableData() +{ + return m_Data.get(); +} + +} // namespace profiling + +} // namespace armnn |