diff options
author | Finn Williams <Finn.Williams@arm.com> | 2020-05-07 10:38:15 +0100 |
---|---|---|
committer | Jim Flynn <jim.flynn@arm.com> | 2020-05-12 22:00:17 +0000 |
commit | 0c8cb99db6dd8b1ea073ef7227b2872a3cb0b269 (patch) | |
tree | 3a2301175e09d7e6f2f5feb2d8c6f8a184493b4c /profiling/common | |
parent | d6cb30e7052891996efa41f608fffe4fa62d2094 (diff) | |
download | armnn-0c8cb99db6dd8b1ea073ef7227b2872a3cb0b269.tar.gz |
IVGCVSW-4731 Move Packet.hpp to profiling/common/include
* Refactor profiling cmake to fix inconsistencies/issues with includes
Signed-off-by: Finn Williams <Finn.Williams@arm.com>
Change-Id: I0836762d4c72e25754a28162ec54c8e332422a02
Diffstat (limited to 'profiling/common')
-rw-r--r-- | profiling/common/include/Packet.hpp | 89 |
1 files changed, 89 insertions, 0 deletions
diff --git a/profiling/common/include/Packet.hpp b/profiling/common/include/Packet.hpp new file mode 100644 index 0000000000..c1f2796804 --- /dev/null +++ b/profiling/common/include/Packet.hpp @@ -0,0 +1,89 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// + +#pragma once + +#include <armnn/Exceptions.hpp> + +#include <memory> + +namespace armnn +{ + +namespace profiling +{ + +class Packet +{ +public: + Packet() + : m_Header(0) + , m_Length(0) + , m_Data(nullptr) + {} + + Packet(uint32_t header) + : m_Header(header) + , m_Length(0) + , m_Data(nullptr) + { + m_PacketId = ((header >> 16) & 1023); + m_PacketFamily = (header >> 26); + } + + Packet(uint32_t header, uint32_t length, std::unique_ptr<unsigned char[]>& data) + : m_Header(header) + , m_Length(length) + , m_Data(std::move(data)) + { + m_PacketId = ((header >> 16) & 1023); + m_PacketFamily = (header >> 26); + + if (length == 0 && m_Data != nullptr) + { + throw armnn::InvalidArgumentException("Data should be null when length is zero"); + } + } + + Packet(Packet&& other) + : m_Header(other.m_Header) + , m_PacketFamily(other.m_PacketFamily) + , m_PacketId(other.m_PacketId) + , m_Length(other.m_Length) + , m_Data(std::move(other.m_Data)) + { + other.m_Header = 0; + other.m_PacketFamily = 0; + other.m_PacketId = 0; + other.m_Length = 0; + } + + ~Packet() = default; + + Packet(const Packet& other) = delete; + Packet& operator=(const Packet&) = delete; + Packet& operator=(Packet&&) = default; + + uint32_t GetHeader() const { return m_Header; } + uint32_t GetPacketFamily() const { return m_PacketFamily; } + uint32_t GetPacketId() const { return m_PacketId; } + uint32_t GetPacketClass() const { return m_PacketId >> 3; } + uint32_t GetPacketType() const { return m_PacketId & 7; } + uint32_t GetLength() const { return m_Length; } + const unsigned char* GetData() const { return m_Data.get(); } + + bool IsEmpty() { return m_Header == 0 && m_Length == 0; } + +private: + uint32_t m_Header; + uint32_t m_PacketFamily; + uint32_t m_PacketId; + uint32_t m_Length; + std::unique_ptr<unsigned char[]> m_Data; +}; + +} // namespace profiling + +} // namespace armnn |