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