MCPcopy Create free account
hub / github.com/ARM-software/armnn / Reserve

Method Reserve

profiling/client/src/BufferManager.cpp:24–66  ·  view source on GitHub ↗

Source from the content-addressed store, hash-verified

22}
23
24IPacketBufferPtr BufferManager::Reserve(unsigned int requestedSize, unsigned int& reservedSize)
25{
26 reservedSize = 0;
27#if !defined(ARMNN_DISABLE_THREADS)
28 std::unique_lock<std::mutex> availableListLock(m_AvailableMutex, std::defer_lock);
29#endif
30 if (requestedSize > m_MaxBufferSize)
31 {
32 return nullptr;
33 }
34#if !defined(ARMNN_DISABLE_THREADS)
35 availableListLock.lock();
36#endif
37 if (m_AvailableList.empty())
38 {
39 if (m_CurrentNumberOfBuffers < m_MaxNumberOfBuffers)
40 {
41 // create a temporary overflow/surge buffer and hand it back
42 m_CurrentNumberOfBuffers++;
43#if !defined(ARMNN_DISABLE_THREADS)
44 availableListLock.unlock();
45#endif
46 IPacketBufferPtr buffer = std::make_unique<PacketBuffer>(m_MaxBufferSize);
47 reservedSize = requestedSize;
48 return buffer;
49 }
50 else
51 {
52 // we have totally busted the limit. call a halt to new memory allocations.
53#if !defined(ARMNN_DISABLE_THREADS)
54 availableListLock.unlock();
55#endif
56 return nullptr;
57 }
58 }
59 IPacketBufferPtr buffer = std::move(m_AvailableList.back());
60 m_AvailableList.pop_back();
61#if !defined(ARMNN_DISABLE_THREADS)
62 availableListLock.unlock();
63#endif
64 reservedSize = requestedSize;
65 return buffer;
66}
67
68void BufferManager::Commit(IPacketBufferPtr& packetBuffer, unsigned int size, bool notifyConsumer)
69{

Calls 1

emptyMethod · 0.80

Tested by

no test coverage detected