Allocator class interface for managing large contiguous blocks of memory, which are then sub-allocated into smaller regions of memory. More...
#include <block_allocator.h>
Classes | |
| struct | Config |
| struct | MemoryAllocators |
Public Member Functions | |
| BlockAllocator (const BlockAllocator &)=delete | |
| BlockAllocator & | operator= (const BlockAllocator &)=delete |
| BlockAllocator ()=delete | |
| ~BlockAllocator ()=delete | |
| MemoryRegion * | reserve (void *user_context, const MemoryRequest &request) |
| int | release (void *user_context, MemoryRegion *region) |
| int | reclaim (void *user_context, MemoryRegion *region) |
| int | retain (void *user_context, MemoryRegion *region) |
| bool | collect (void *user_context) |
| int | release (void *user_context) |
| int | destroy (void *user_context) |
| const MemoryAllocators & | current_allocators () const |
| const Config & | current_config () const |
| const Config & | default_config () const |
| size_t | block_count () const |
| size_t | pool_size () const |
Static Public Member Functions | |
| static BlockAllocator * | create (void *user_context, const Config &config, const MemoryAllocators &allocators) |
| static void | destroy (void *user_context, BlockAllocator *block_allocator) |
Allocator class interface for managing large contiguous blocks of memory, which are then sub-allocated into smaller regions of memory.
This class only manages the address creation for the regions – allocation callback functions are used to request the memory from the necessary system or API calls. This class is intended to be used inside of a higher level memory management class that provides thread safety, policy management and API integration for a specific runtime API (eg Vulkan, OpenCL, etc)
Definition at line 25 of file block_allocator.h.
|
delete |
References BlockAllocator().
Referenced by BlockAllocator(), create(), destroy(), and operator=().
|
delete |
|
delete |
|
delete |
References BlockAllocator().
|
static |
Definition at line 123 of file block_allocator.h.
References BlockAllocator(), and halide_abort_if_false.
|
static |
Definition at line 137 of file block_allocator.h.
References BlockAllocator(), destroy(), and halide_abort_if_false.
Referenced by destroy(), and Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy().
| MemoryRegion * Halide::Runtime::Internal::BlockAllocator::reserve | ( | void * | user_context, |
| const MemoryRequest & | request ) |
Definition at line 154 of file block_allocator.h.
References Halide::Runtime::Internal::BlockResource::allocator, Halide::Runtime::Internal::MemoryProperties::caching, Halide::Runtime::Internal::MemoryRequest::dedicated, halide_abort_if_false, halide_memory_caching_name(), halide_memory_usage_name(), halide_memory_visibility_name(), Halide::Runtime::Internal::MemoryRequest::offset, Halide::Runtime::Internal::MemoryRequest::properties, Halide::Runtime::Internal::MemoryRequest::size, Halide::Runtime::Internal::MemoryProperties::usage, Halide::Runtime::Internal::LinkedList::EntryType::value, and Halide::Runtime::Internal::MemoryProperties::visibility.
| int Halide::Runtime::Internal::BlockAllocator::release | ( | void * | user_context, |
| MemoryRegion * | region ) |
Definition at line 197 of file block_allocator.h.
References Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_internal_error, and Halide::Runtime::Internal::RegionAllocator::release().
| int Halide::Runtime::Internal::BlockAllocator::reclaim | ( | void * | user_context, |
| MemoryRegion * | region ) |
Definition at line 208 of file block_allocator.h.
References Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_internal_error, and Halide::Runtime::Internal::RegionAllocator::reclaim().
| int Halide::Runtime::Internal::BlockAllocator::retain | ( | void * | user_context, |
| MemoryRegion * | region ) |
Definition at line 219 of file block_allocator.h.
References Halide::Runtime::Internal::RegionAllocator::find_allocator(), halide_error_code_internal_error, and Halide::Runtime::Internal::RegionAllocator::retain().
| bool Halide::Runtime::Internal::BlockAllocator::collect | ( | void * | user_context | ) |
Definition at line 230 of file block_allocator.h.
References Halide::Runtime::Internal::BlockResource::allocator, Halide::Runtime::Internal::RegionAllocator::collect(), Halide::Runtime::Internal::LinkedList::EntryType::prev_ptr, Halide::Runtime::Internal::BlockResource::reserved, and Halide::Runtime::Internal::LinkedList::EntryType::value.
| int Halide::Runtime::Internal::BlockAllocator::release | ( | void * | user_context | ) |
Definition at line 265 of file block_allocator.h.
References Halide::Runtime::Internal::LinkedList::EntryType::prev_ptr.
| int Halide::Runtime::Internal::BlockAllocator::destroy | ( | void * | user_context | ) |
Definition at line 275 of file block_allocator.h.
References Halide::Runtime::Internal::LinkedList::EntryType::prev_ptr.
| const BlockAllocator::MemoryAllocators & Halide::Runtime::Internal::BlockAllocator::current_allocators | ( | ) | const |
Definition at line 586 of file block_allocator.h.
Referenced by Halide::Runtime::Internal::Vulkan::VulkanMemoryAllocator::destroy().
| const BlockAllocator::Config & Halide::Runtime::Internal::BlockAllocator::current_config | ( | ) | const |
Definition at line 590 of file block_allocator.h.
| const BlockAllocator::Config & Halide::Runtime::Internal::BlockAllocator::default_config | ( | ) | const |
Definition at line 594 of file block_allocator.h.
| size_t Halide::Runtime::Internal::BlockAllocator::block_count | ( | ) | const |
Definition at line 599 of file block_allocator.h.
| size_t Halide::Runtime::Internal::BlockAllocator::pool_size | ( | ) | const |