1*89c4ff92SAndroid Build Coastguard Worker // 2*89c4ff92SAndroid Build Coastguard Worker // Copyright © 2021 Arm Ltd and Contributors. All rights reserved. 3*89c4ff92SAndroid Build Coastguard Worker // SPDX-License-Identifier: MIT 4*89c4ff92SAndroid Build Coastguard Worker // 5*89c4ff92SAndroid Build Coastguard Worker 6*89c4ff92SAndroid Build Coastguard Worker #pragma once 7*89c4ff92SAndroid Build Coastguard Worker 8*89c4ff92SAndroid Build Coastguard Worker #include <cstddef> 9*89c4ff92SAndroid Build Coastguard Worker #include <memory> 10*89c4ff92SAndroid Build Coastguard Worker #include <armnn/MemorySources.hpp> 11*89c4ff92SAndroid Build Coastguard Worker #include <armnn/utility/IgnoreUnused.hpp> 12*89c4ff92SAndroid Build Coastguard Worker 13*89c4ff92SAndroid Build Coastguard Worker namespace armnn 14*89c4ff92SAndroid Build Coastguard Worker { 15*89c4ff92SAndroid Build Coastguard Worker 16*89c4ff92SAndroid Build Coastguard Worker /** Default Memory Allocator class returned from IBackendInternal::GetDefaultAllocator(MemorySource) */ 17*89c4ff92SAndroid Build Coastguard Worker class DefaultAllocator : public armnn::ICustomAllocator 18*89c4ff92SAndroid Build Coastguard Worker { 19*89c4ff92SAndroid Build Coastguard Worker public: 20*89c4ff92SAndroid Build Coastguard Worker DefaultAllocator() = default; 21*89c4ff92SAndroid Build Coastguard Worker allocate(size_t size,size_t alignment=0)22*89c4ff92SAndroid Build Coastguard Worker void* allocate(size_t size, size_t alignment = 0) override 23*89c4ff92SAndroid Build Coastguard Worker { 24*89c4ff92SAndroid Build Coastguard Worker IgnoreUnused(alignment); 25*89c4ff92SAndroid Build Coastguard Worker return ::operator new(size_t(size)); 26*89c4ff92SAndroid Build Coastguard Worker } 27*89c4ff92SAndroid Build Coastguard Worker free(void * ptr)28*89c4ff92SAndroid Build Coastguard Worker void free(void* ptr) override 29*89c4ff92SAndroid Build Coastguard Worker { 30*89c4ff92SAndroid Build Coastguard Worker ::operator delete(ptr); 31*89c4ff92SAndroid Build Coastguard Worker } 32*89c4ff92SAndroid Build Coastguard Worker GetMemorySourceType()33*89c4ff92SAndroid Build Coastguard Worker armnn::MemorySource GetMemorySourceType() override 34*89c4ff92SAndroid Build Coastguard Worker { 35*89c4ff92SAndroid Build Coastguard Worker return armnn::MemorySource::Malloc; 36*89c4ff92SAndroid Build Coastguard Worker } 37*89c4ff92SAndroid Build Coastguard Worker GetMemoryRegionAtOffset(void * buffer,size_t offset,size_t alignment=0)38*89c4ff92SAndroid Build Coastguard Worker void* GetMemoryRegionAtOffset(void* buffer, size_t offset, size_t alignment = 0) override 39*89c4ff92SAndroid Build Coastguard Worker { 40*89c4ff92SAndroid Build Coastguard Worker IgnoreUnused(alignment); 41*89c4ff92SAndroid Build Coastguard Worker return static_cast<char*>(buffer) + offset; 42*89c4ff92SAndroid Build Coastguard Worker } 43*89c4ff92SAndroid Build Coastguard Worker }; 44*89c4ff92SAndroid Build Coastguard Worker 45*89c4ff92SAndroid Build Coastguard Worker } // namespace armnn