aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/BufferManager.hpp
diff options
context:
space:
mode:
authorSadik Armagan <sadik.armagan@arm.com>2020-02-10 12:24:15 +0000
committerSadik Armagan <sadik.armagan@arm.com>2020-02-10 14:08:54 +0000
commit3896b47a3532aadcde43a3e7fed760a0f4a29e6b (patch)
treea22d1b6d5b2df7518c9116dd48a7ca1990b3ae66 /src/profiling/BufferManager.hpp
parent03181ff73f4b37d2132f15c4bd229a148840cc15 (diff)
downloadarmnn-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.hpp13
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