aboutsummaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2018-03-13 18:21:53 +0000
committerAnthony Barbier <anthony.barbier@arm.com>2018-11-02 16:49:16 +0000
commite5f3b7f9780111f9e5329ebcaabe96e3ac705c71 (patch)
tree780ea187c85ae6e41961efe4f5651b9f31d64e1e
parenta18aee7ed0bbec2fae3b9b7e1e9ac70c4070a767 (diff)
downloadComputeLibrary-e5f3b7f9780111f9e5329ebcaabe96e3ac705c71.tar.gz
COMPMID-1002: Expose number of pools in PoolManager
Change-Id: I3b14bd87d0650dc4378dc3ccbd14274b9c019657 Reviewed-on: https://eu-gerrit-1.euhpc.arm.com/124428 Reviewed-by: Anthony Barbier <anthony.barbier@arm.com> Tested-by: Jenkins <bsgcomp@arm.com>
-rw-r--r--arm_compute/runtime/IPoolManager.h7
-rw-r--r--arm_compute/runtime/PoolManager.h5
-rw-r--r--src/runtime/PoolManager.cpp9
3 files changed, 17 insertions, 4 deletions
diff --git a/arm_compute/runtime/IPoolManager.h b/arm_compute/runtime/IPoolManager.h
index 03cccdd605..4cc3c07b5f 100644
--- a/arm_compute/runtime/IPoolManager.h
+++ b/arm_compute/runtime/IPoolManager.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -53,6 +53,11 @@ public:
* @param[in] pool Pool to be managed
*/
virtual void register_pool(std::unique_ptr<IMemoryPool> pool) = 0;
+ /** Returns the total number of pools managed by the pool manager
+ *
+ * @return Number of managed pools
+ */
+ virtual size_t num_pools() const = 0;
};
} // arm_compute
#endif /*__ARM_COMPUTE_IPOOLMANAGER_H__ */
diff --git a/arm_compute/runtime/PoolManager.h b/arm_compute/runtime/PoolManager.h
index 6549350e8f..509080532a 100644
--- a/arm_compute/runtime/PoolManager.h
+++ b/arm_compute/runtime/PoolManager.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -56,12 +56,13 @@ public:
IMemoryPool *lock_pool() override;
void unlock_pool(IMemoryPool *pool) override;
void register_pool(std::unique_ptr<IMemoryPool> pool) override;
+ size_t num_pools() const override;
private:
std::list<std::unique_ptr<IMemoryPool>> _free_pools; /**< List of free pools */
std::list<std::unique_ptr<IMemoryPool>> _occupied_pools; /**< List of occupied pools */
std::unique_ptr<arm_compute::Semaphore> _sem; /**< Semaphore to control the queues */
- arm_compute::Mutex _mtx; /**< Mutex to control access to the queues */
+ mutable arm_compute::Mutex _mtx; /**< Mutex to control access to the queues */
};
} // arm_compute
#endif /*__ARM_COMPUTE_POOLMANAGER_H__ */
diff --git a/src/runtime/PoolManager.cpp b/src/runtime/PoolManager.cpp
index 42cc943e56..293241d6f4 100644
--- a/src/runtime/PoolManager.cpp
+++ b/src/runtime/PoolManager.cpp
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2018 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -72,3 +72,10 @@ void PoolManager::register_pool(std::unique_ptr<IMemoryPool> pool)
// Update semaphore
_sem = arm_compute::support::cpp14::make_unique<arm_compute::Semaphore>(_free_pools.size());
}
+
+size_t PoolManager::num_pools() const
+{
+ std::lock_guard<arm_compute::Mutex> lock(_mtx);
+
+ return _free_pools.size() + _occupied_pools.size();
+} \ No newline at end of file