aboutsummaryrefslogtreecommitdiff
path: root/arm_compute
diff options
context:
space:
mode:
authorGeorgios Pinitas <georgios.pinitas@arm.com>2019-04-02 17:27:03 +0100
committerGeorgios Pinitas <georgios.pinitas@arm.com>2019-04-08 11:47:38 +0000
commitda953f2e17b401ff595ac88008cd5e90440ebf74 (patch)
treed27b1a731fdabea773bd97e7ce6808e32e5539d1 /arm_compute
parent4335a8c163ada987dfc88f8be4575fb6b68d64d9 (diff)
downloadComputeLibrary-da953f2e17b401ff595ac88008cd5e90440ebf74.tar.gz
COMPMID-2098: Scope handling of memory group resources.
Change-Id: Ie945526bd7845301458039edf3129253c1808505 Signed-off-by: Georgios Pinitas <georgios.pinitas@arm.com> Reviewed-on: https://review.mlplatform.org/c/938 Comments-Addressed: Arm Jenkins <bsgcomp@arm.com> Reviewed-by: Michele Di Giorgio <michele.digiorgio@arm.com> Tested-by: Arm Jenkins <bsgcomp@arm.com>
Diffstat (limited to 'arm_compute')
-rw-r--r--arm_compute/runtime/IMemoryGroup.h33
1 files changed, 32 insertions, 1 deletions
diff --git a/arm_compute/runtime/IMemoryGroup.h b/arm_compute/runtime/IMemoryGroup.h
index be03ea4a01..159e99aeb1 100644
--- a/arm_compute/runtime/IMemoryGroup.h
+++ b/arm_compute/runtime/IMemoryGroup.h
@@ -1,5 +1,5 @@
/*
- * Copyright (c) 2017 ARM Limited.
+ * Copyright (c) 2017-2019 ARM Limited.
*
* SPDX-License-Identifier: MIT
*
@@ -41,5 +41,36 @@ public:
/** Gets the memory mapping of the group */
virtual MemoryMappings &mappings() = 0;
};
+
+/** Memory group resources scope handling class */
+class MemoryGroupResourceScope
+{
+public:
+ /** Constructor
+ *
+ * @param[in] memory_group Memory group to handle
+ */
+ explicit MemoryGroupResourceScope(IMemoryGroup &memory_group)
+ : _memory_group(memory_group)
+ {
+ _memory_group.acquire();
+ }
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ MemoryGroupResourceScope(const MemoryGroupResourceScope &) = delete;
+ /** Default move constructor */
+ MemoryGroupResourceScope(MemoryGroupResourceScope &&) = default;
+ /** Prevent instances of this class from being copied (As this class contains pointers) */
+ MemoryGroupResourceScope &operator=(const MemoryGroupResourceScope &) = delete;
+ /** Default move assignment operator */
+ MemoryGroupResourceScope &operator=(MemoryGroupResourceScope &&) = default;
+ /** Destructor */
+ ~MemoryGroupResourceScope()
+ {
+ _memory_group.release();
+ }
+
+private:
+ IMemoryGroup &_memory_group;
+};
} // arm_compute
#endif /*__ARM_COMPUTE_IMEMORYGROUP_H__ */