diff options
author | Narumol Prangnawarat <narumol.prangnawarat@arm.com> | 2019-09-27 18:00:11 +0100 |
---|---|---|
committer | Matteo Martincigh <matteo.martincigh@arm.com> | 2019-09-30 14:00:10 +0000 |
commit | 7be47efac07b6276f02a17cb486f9061a426a837 (patch) | |
tree | b63cc8dddef79b6540c9b2abae03055bf85bb685 /src/profiling/PacketBuffer.cpp | |
parent | aab82c5ebc5b65f5f5f657d7bee6bd60f106d3b9 (diff) | |
download | armnn-7be47efac07b6276f02a17cb486f9061a426a837.tar.gz |
IVGCVSW-3903 Create Counter Stream Buffer
* Add implementation of PacketBuffer
* Add implementation of BufferManager
* Unit tests
Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com>
Change-Id: Icca3807149ff5a8ed31cc87de73c50b95bca39d4
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 |