aboutsummaryrefslogtreecommitdiff
path: root/src/profiling/BufferManager.cpp
diff options
context:
space:
mode:
authorNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-09-30 16:20:20 +0100
committerNarumol Prangnawarat <narumol.prangnawarat@arm.com>2019-10-04 10:13:25 +0100
commit0ec068f220daf03049a9ffb5ac53118162f50106 (patch)
treebf0673657c6ff328a70346f7fb4f714143af17b6 /src/profiling/BufferManager.cpp
parent6b0f3c6d7025fb26bd2a7733dbfba02afaa44313 (diff)
downloadarmnn-0ec068f220daf03049a9ffb5ac53118162f50106.tar.gz
IVGCVSW-3904 Add more unit tests for send thread with BufferManager
* Add timeout parameter to wait for readable data * Write all readable data to the profiling connection when ready to read * Set ready to read when buffer exhaust * Ensure that readable data get written to profiling connection before the send thread is stopped * Add MockWriteProfilingConnection to be able to test WritePacket * Refactor BufferManager and the unit tests Signed-off-by: Narumol Prangnawarat <narumol.prangnawarat@arm.com> Change-Id: I80ae01bd8d0119a3a3a957069ae8ac521c005a12
Diffstat (limited to 'src/profiling/BufferManager.cpp')
-rw-r--r--src/profiling/BufferManager.cpp7
1 files changed, 4 insertions, 3 deletions
diff --git a/src/profiling/BufferManager.cpp b/src/profiling/BufferManager.cpp
index dbf4466bbb..6ac3ee17d1 100644
--- a/src/profiling/BufferManager.cpp
+++ b/src/profiling/BufferManager.cpp
@@ -29,16 +29,17 @@ BufferManager::BufferManager(unsigned int numberOfBuffers, unsigned int maxPacke
std::unique_ptr<IPacketBuffer> BufferManager::Reserve(unsigned int requestedSize, unsigned int& reservedSize)
{
+ reservedSize = 0;
std::unique_lock<std::mutex> availableListLock(m_AvailableMutex, std::defer_lock);
if (requestedSize > m_MaxBufferSize)
{
- throw armnn::InvalidArgumentException("The maximum buffer size that can be requested is [" +
- std::to_string(m_MaxBufferSize) + "] bytes");
+ return nullptr;
}
availableListLock.lock();
if (m_AvailableList.empty())
{
- throw armnn::profiling::BufferExhaustion("Buffer not available");
+ availableListLock.unlock();
+ return nullptr;
}
std::unique_ptr<IPacketBuffer> buffer = std::move(m_AvailableList.back());
m_AvailableList.pop_back();