From f9aeef0e036df176699aa96d30d2ca8d7546534e Mon Sep 17 00:00:00 2001 From: Aron Virginas-Tar Date: Fri, 12 Oct 2018 15:18:03 +0100 Subject: IVGCVSW-2006: Move ACL memory manager source code under aclCommon Change-Id: Ie1c74a18de5c3dd1cd5285c222bd6327489c1508 --- src/backends/aclCommon/memory/PoolManager.hpp | 57 +++++++++++++++++++++++++++ 1 file changed, 57 insertions(+) create mode 100644 src/backends/aclCommon/memory/PoolManager.hpp (limited to 'src/backends/aclCommon/memory/PoolManager.hpp') diff --git a/src/backends/aclCommon/memory/PoolManager.hpp b/src/backends/aclCommon/memory/PoolManager.hpp new file mode 100644 index 0000000000..39bc665415 --- /dev/null +++ b/src/backends/aclCommon/memory/PoolManager.hpp @@ -0,0 +1,57 @@ +// +// Copyright © 2017 Arm Ltd. All rights reserved. +// SPDX-License-Identifier: MIT +// +#pragma once + +#include "IPoolManager.hpp" + +#include +#include + +#include +#include + +#include +#include +#include + +namespace armnn +{ + +class PoolManager : public IPoolManager +{ +public: + PoolManager(); + + PoolManager(const PoolManager &) = delete; + + PoolManager &operator=(const PoolManager &) = delete; + + PoolManager(PoolManager &&) = default; + + PoolManager &operator=(PoolManager &&) = default; + + arm_compute::IMemoryPool *lock_pool() override; + void unlock_pool(arm_compute::IMemoryPool *pool) override; + void register_pool(std::unique_ptr pool) override; + size_t num_pools() const override; + + void AllocatePools() override; + void ReleasePools() override; + +private: + /// List of free pools + std::list> m_FreePools; + + /// List of occupied pools + std::list> m_OccupiedPools; + + /// Semaphore to control the queues + std::unique_ptr m_Semaphore; + + /// Mutex to control access to the queues + mutable arm_compute::Mutex m_Mutex; +}; + +} // namespace armnn \ No newline at end of file -- cgit v1.2.1