diff options
author | Jim Flynn <jim.flynn@arm.com> | 2022-04-12 17:19:28 +0100 |
---|---|---|
committer | TeresaARM <teresa.charlinreyes@arm.com> | 2022-04-14 14:06:56 +0000 |
commit | e195a0418d86650e132737716059bff0ec80257f (patch) | |
tree | 1678283a958a2ab74cd27b648f5a69ef5270d289 /profiling/client/src/BufferManager.cpp | |
parent | 69515d3b36653a00a5abee8bf52ac26dd6522bee (diff) | |
download | armnn-e195a0418d86650e132737716059bff0ec80257f.tar.gz |
IVGCVSW-6710 Add compile of BareMetalDeserializedGraph sample
Change-Id: Ice69c2a22f589f68d302f80500dfe4e514a796d2
Signed-off-by: Jim Flynn <jim.flynn@arm.com>
Diffstat (limited to 'profiling/client/src/BufferManager.cpp')
-rw-r--r-- | profiling/client/src/BufferManager.cpp | 35 |
1 files changed, 34 insertions, 1 deletions
diff --git a/profiling/client/src/BufferManager.cpp b/profiling/client/src/BufferManager.cpp index 42e32009e4..592d374817 100644 --- a/profiling/client/src/BufferManager.cpp +++ b/profiling/client/src/BufferManager.cpp @@ -24,19 +24,25 @@ BufferManager::BufferManager(unsigned int numberOfBuffers, unsigned int maxPacke IPacketBufferPtr BufferManager::Reserve(unsigned int requestedSize, unsigned int& reservedSize) { reservedSize = 0; +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> availableListLock(m_AvailableMutex, std::defer_lock); +#endif if (requestedSize > m_MaxBufferSize) { return nullptr; } +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.lock(); +#endif if (m_AvailableList.empty()) { if (m_CurrentNumberOfBuffers < m_MaxNumberOfBuffers) { // create a temporary overflow/surge buffer and hand it back m_CurrentNumberOfBuffers++; +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.unlock(); +#endif IPacketBufferPtr buffer = std::make_unique<PacketBuffer>(m_MaxBufferSize); reservedSize = requestedSize; return buffer; @@ -44,25 +50,34 @@ IPacketBufferPtr BufferManager::Reserve(unsigned int requestedSize, unsigned int else { // we have totally busted the limit. call a halt to new memory allocations. +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.unlock(); +#endif return nullptr; } } IPacketBufferPtr buffer = std::move(m_AvailableList.back()); m_AvailableList.pop_back(); +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.unlock(); +#endif reservedSize = requestedSize; return buffer; } void BufferManager::Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bool notifyConsumer) { +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> readableListLock(m_ReadableMutex, std::defer_lock); +#endif packetBuffer->Commit(size); +#if !defined(ARMNN_DISABLE_THREADS) readableListLock.lock(); +#endif m_ReadableList.push(std::move(packetBuffer)); +#if !defined(ARMNN_DISABLE_THREADS) readableListLock.unlock(); - +#endif if (notifyConsumer) { FlushReadList(); @@ -82,9 +97,13 @@ void BufferManager::Initialize() void BufferManager::Release(IPacketBufferPtr& packetBuffer) { +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> availableListLock(m_AvailableMutex, std::defer_lock); +#endif packetBuffer->Release(); +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.lock(); +#endif if (m_AvailableList.size() <= m_NumberOfBuffers) { m_AvailableList.push_back(std::move(packetBuffer)); @@ -98,14 +117,18 @@ void BufferManager::Release(IPacketBufferPtr& packetBuffer) --m_CurrentNumberOfBuffers; } } +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.unlock(); +#endif } void BufferManager::Reset() { //This method should only be called once all threads have been joined +#if !defined(ARMNN_DISABLE_THREADS) std::lock_guard<std::mutex> readableListLock(m_ReadableMutex); std::lock_guard<std::mutex> availableListLock(m_AvailableMutex); +#endif m_AvailableList.clear(); std::queue<IPacketBufferPtr>().swap(m_ReadableList); @@ -115,12 +138,16 @@ void BufferManager::Reset() IPacketBufferPtr BufferManager::GetReadableBuffer() { +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> readableListLock(m_ReadableMutex); +#endif if (!m_ReadableList.empty()) { IPacketBufferPtr buffer = std::move(m_ReadableList.front()); m_ReadableList.pop(); +#if !defined(ARMNN_DISABLE_THREADS) readableListLock.unlock(); +#endif return buffer; } return nullptr; @@ -128,9 +155,13 @@ IPacketBufferPtr BufferManager::GetReadableBuffer() void BufferManager::MarkRead(IPacketBufferPtr& packetBuffer) { +#if !defined(ARMNN_DISABLE_THREADS) std::unique_lock<std::mutex> availableListLock(m_AvailableMutex, std::defer_lock); +#endif packetBuffer->MarkRead(); +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.lock(); +#endif if (m_AvailableList.size() <= m_NumberOfBuffers) { m_AvailableList.push_back(std::move(packetBuffer)); @@ -144,7 +175,9 @@ void BufferManager::MarkRead(IPacketBufferPtr& packetBuffer) --m_CurrentNumberOfBuffers; } } +#if !defined(ARMNN_DISABLE_THREADS) availableListLock.unlock(); +#endif } void BufferManager::SetConsumer(IConsumer* consumer) |