diff options
author | Sadik Armagan <sadik.armagan@arm.com> | 2020-02-10 12:24:15 +0000 |
---|---|---|
committer | Sadik Armagan <sadik.armagan@arm.com> | 2020-02-10 14:08:54 +0000 |
commit | 3896b47a3532aadcde43a3e7fed760a0f4a29e6b (patch) | |
tree | a22d1b6d5b2df7518c9116dd48a7ca1990b3ae66 /src/profiling/BufferManager.hpp | |
parent | 03181ff73f4b37d2132f15c4bd229a148840cc15 (diff) | |
download | armnn-3896b47a3532aadcde43a3e7fed760a0f4a29e6b.tar.gz |
IVGCVSW-4328 BufferManager running out of buffers crashes application
* Refactored SendCounterPacket classes, separated SendCounterPacket from Send thread
* Created ISendThread.hpp, IConsumer, SendThread.hpp and SendThread.cpp
* Injected IConsumer to BufferManager to notify SendThread when packet is ready to read
Signed-off-by: Sadik Armagan <sadik.armagan@arm.com>
Change-Id: I80f0bb8b8401c6bfd1611f7760217c6fe35d7ad8
Diffstat (limited to 'src/profiling/BufferManager.hpp')
-rw-r--r-- | src/profiling/BufferManager.hpp | 13 |
1 files changed, 12 insertions, 1 deletions
diff --git a/src/profiling/BufferManager.hpp b/src/profiling/BufferManager.hpp index 495b113867..d678cd3ec0 100644 --- a/src/profiling/BufferManager.hpp +++ b/src/profiling/BufferManager.hpp @@ -6,6 +6,7 @@ #pragma once #include "IBufferManager.hpp" +#include "IConsumer.hpp" #include <condition_variable> #include <mutex> @@ -28,7 +29,7 @@ public: void Reset(); - void Commit(IPacketBufferPtr& packetBuffer, unsigned int size) override; + void Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bool notifyConsumer = true) override; void Release(IPacketBufferPtr& packetBuffer) override; @@ -36,6 +37,13 @@ public: void MarkRead(IPacketBufferPtr& packetBuffer) override; + /// Set Consumer on the buffer manager to be notified when there is a Commit + /// Can only be one consumer + void SetConsumer(IConsumer* consumer) override; + + /// Notify the Consumer buffer can be read + void FlushReadList() override; + private: void Initialize(); @@ -55,6 +63,9 @@ private: // Mutex for readable packet buffer list std::mutex m_ReadableMutex; + + // Consumer thread to notify packet is ready to read + IConsumer* m_Consumer = nullptr; }; } // namespace profiling |