From e5f3b7f9780111f9e5329ebcaabe96e3ac705c71 Mon Sep 17 00:00:00 2001 From: Georgios Pinitas Date: Tue, 13 Mar 2018 18:21:53 +0000 Subject: 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 Tested-by: Jenkins --- arm_compute/runtime/IPoolManager.h | 7 ++++++- arm_compute/runtime/PoolManager.h | 5 +++-- src/runtime/PoolManager.cpp | 9 ++++++++- 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 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 pool) override; + size_t num_pools() const override; private: std::list> _free_pools; /**< List of free pools */ std::list> _occupied_pools; /**< List of occupied pools */ std::unique_ptr _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 pool) // Update semaphore _sem = arm_compute::support::cpp14::make_unique(_free_pools.size()); } + +size_t PoolManager::num_pools() const +{ + std::lock_guard lock(_mtx); + + return _free_pools.size() + _occupied_pools.size(); +} \ No newline at end of file -- cgit v1.2.1