xref: /aosp_15_r20/external/armnn/src/backends/backendsCommon/DefaultAllocator.hpp (revision 89c4ff92f2867872bb9e2354d150bf0c8c502810)
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