| // |
| // Copyright © 2017 Arm Ltd. All rights reserved. |
| // SPDX-License-Identifier: MIT |
| // |
| #pragma once |
| |
| #include "IMemoryPool.hpp" |
| |
| #include <arm_compute/runtime/IAllocator.h> |
| #include <arm_compute/runtime/Types.h> |
| |
| namespace armnn |
| { |
| |
| class OffsetMemoryPool : public IMemoryPool |
| { |
| public: |
| OffsetMemoryPool(arm_compute::IAllocator* allocator, size_t blobSize); |
| |
| ~OffsetMemoryPool(); |
| |
| OffsetMemoryPool(const OffsetMemoryPool&) = delete; |
| |
| OffsetMemoryPool& operator=(const OffsetMemoryPool&) = delete; |
| |
| OffsetMemoryPool(OffsetMemoryPool&&) = default; |
| |
| OffsetMemoryPool& operator=(OffsetMemoryPool &&) = default; |
| |
| void acquire(arm_compute::MemoryMappings& handles) override; |
| void release(arm_compute::MemoryMappings& handles) override; |
| |
| arm_compute::MappingType mapping_type() const override; |
| |
| std::unique_ptr<arm_compute::IMemoryPool> duplicate() override; |
| |
| void AllocatePool() override; |
| void ReleasePool() override; |
| |
| private: |
| /// Allocator to use for internal allocation |
| arm_compute::IAllocator* m_Allocator; |
| |
| /// Memory blob |
| void* m_Blob; |
| |
| /// Size of the allocated memory blob |
| size_t m_BlobSize; |
| |
| /// Flag indicating whether memory has been allocated for the pool |
| bool m_MemoryAllocated; |
| }; |
| |
| } // namespace armnn |