blob: c61d2327f43a3ad9e78d3a9ba1bb545ce5484f2f [file] [log] [blame]
Narumol Prangnawarat404b2752019-09-24 17:23:16 +01001//
2// Copyright © 2019 Arm Ltd. All rights reserved.
3// SPDX-License-Identifier: MIT
4//
5
6#pragma once
7
Matteo Martincigh2ffcc412019-11-05 11:47:40 +00008#include <memory>
9
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010010namespace armnn
11{
12
13namespace profiling
14{
15
16class IReadOnlyPacketBuffer // interface used by the read thread
17{
18public:
19 virtual ~IReadOnlyPacketBuffer() {}
20
21 virtual const unsigned char* const GetReadableData() const = 0;
22
23 virtual unsigned int GetSize() const = 0;
24
25 virtual void MarkRead() = 0;
26};
27
28class IPacketBuffer : public IReadOnlyPacketBuffer // interface used by code that writes binary packets
29{
30public:
31 virtual ~IPacketBuffer() {}
32
33 virtual void Commit(unsigned int size) = 0;
34
35 virtual void Release() = 0;
36
37 virtual unsigned char* GetWritableData() = 0;
38};
39
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000040using IPacketBufferPtr = std::unique_ptr<IPacketBuffer>;
41
Narumol Prangnawarat404b2752019-09-24 17:23:16 +010042} // namespace profiling
43
Matteo Martincigh2ffcc412019-11-05 11:47:40 +000044} // namespace armnn