← All compilation units

Flyology_Allocators.Allocation_Algorithms

Description

Defines representation shared by relocatable allocation algorithms. Algorithm packages interpret allocation tokens, own their metadata layout, and state their synchronization and recovery rules. No stored handle contains a native address or Ada access value.

Allocation_Capabilities

type Allocation_Capabilities is record
   Search                : Search_Bound;
   Allocation_Contention : Contention_Scope;
   Release_Contention    : Contention_Scope;
   In_Band_Metadata      : Boolean;
   Splits_Blocks         : Boolean;
   Coalesces_On_Release  : Boolean;
   Timed_Contention      : Boolean;
   Release_Exclusion     : Boolean;
end record;
Record fields
Search
Allocation_Contention
Release_Contention
In_Band_Metadata
Splits_Blocks
Coalesces_On_Release
Timed_Contention
Release_Exclusion

Allocation_Handle

type Allocation_Handle is record
   Token      : Interfaces.Unsigned_64 := 0;
   Generation : Interfaces.Unsigned_64 := 0;
end record;
Record fields
Token
Generation

Allocation_Result

type Allocation_Result is (Allocated, Exhausted, Allocation_Contended);
Enumeration literals
Allocated
Exhausted
Allocation_Contended

Contention_Scope

type Contention_Scope is (Whole_Allocator, Per_Allocation, External_Exclusion);
Enumeration literals
Whole_Allocator
Per_Allocation
External_Exclusion

Metadata

type Metadata is record
   Usable_Capacity    : Interfaces.Unsigned_32;
   Minimum_Block_Size : Interfaces.Unsigned_32;
   Instance_ID        : Interfaces.Unsigned_64;
   Incarnation        : Interfaces.Unsigned_32;
   Extent             : Byte_Count;
end record;
Record fields
Usable_Capacity
Minimum_Block_Size
Instance_ID
Incarnation
Extent

Null_Allocation

Null_Allocation : constant Allocation_Handle := (Token => 0, Generation => 0);

Search_Bound

type Search_Bound is (Constant_Class_Bound, Logarithmic, Linear);
Enumeration literals
Constant_Class_Bound
Logarithmic
Linear