Description
Hybrid slab/span allocation inside fixed caller-owned bytes. Small allocations use bitmap slots in classed runs; larger allocations reserve contiguous runs. Stored metadata contains only fixed-width values. One persisted nonblocking guard serializes metadata mutation across views. @exclude
Attach
procedure Attach
(Item : out View;
Region : Region_View;
Location : Region_Offset;
Configuration : Slab_Span_Kernel.Configuration;
Instance_ID : Interfaces.Unsigned_64)
Parameters
- Item
- Region
- Location
- Configuration
- Instance_ID
Attach_Allocation
procedure Attach_Allocation (Region : in out Region_View; Item : View; Value : Allocation_Handle)
Parameters
- Region
- Item
- Value
Block_Capacity
function Block_Capacity (Item : View; Value : Allocation_Handle) return Byte_Count
Parameters
- Item
- Value
Return value
Configuration
type Configuration is record
Usable_Capacity : Positive;
Minimum_Block_Size : Positive;
Run_Size : Positive;
end record;
Record fields
- Usable_Capacity
- Minimum_Block_Size
- Run_Size
Configuration_Minimum_Block_Size
function Configuration_Minimum_Block_Size (Value : Configuration) return Positive
Parameters
- Value
Return value
Configuration_Usable_Capacity
function Configuration_Usable_Capacity (Value : Configuration) return Positive
Parameters
- Value
Return value
Copy
procedure Copy
(Item : View;
Source : Allocation_Handle;
Source_Offset : Byte_Count;
Target : Allocation_Handle;
Target_Offset : Byte_Count;
Length : Byte_Count)
Parameters
- Item
- Source
- Source_Offset
- Target
- Target_Offset
- Length
Create_Or_Attach
procedure Create_Or_Attach
(Item : out View;
Region : Region_View;
Location : Region_Offset;
Configuration : Slab_Span_Kernel.Configuration;
Instance_ID : Interfaces.Unsigned_64;
Result : out Open_Result)
Parameters
- Item
- Region
- Location
- Configuration
- Instance_ID
- Result
Current_Metadata
function Current_Metadata (Item : View) return Metadata
Parameters
- Item
Return value
Destroy
procedure Destroy (Item : in out View)
Parameters
- Item
Detach
procedure Detach (Item : in out View)
Parameters
- Item
Initialize
procedure Initialize
(Item : out View;
Region : Region_View;
Location : Region_Offset;
Configuration : Slab_Span_Kernel.Configuration;
Instance_ID : Interfaces.Unsigned_64)
Parameters
- Item
- Region
- Location
- Configuration
- Instance_ID
Is_Attached
function Is_Attached (Item : View) return Boolean
Parameters
- Item
Return value
Is_Poisoned
function Is_Poisoned (Item : View) return Boolean
Parameters
- Item
Return value
Minimum_Block_Limit
Minimum_Block_Limit : constant Positive := 16;
Poison
procedure Poison (Region : Region_View; Location : Region_Offset)
Parameters
- Region
- Location
Release
procedure Release (Item : in out View; Value : Allocation_Handle)
Parameters
- Item
- Value
Release
procedure Release (Item : in out View; Value : Allocation_Handle; Timeout : Wait_Timeout)
Parameters
- Item
- Value
- Timeout
Required_Storage
function Required_Storage (Configuration : Slab_Span_Kernel.Configuration) return Byte_Count
Parameters
- Configuration
Return value
Try_Allocate
procedure Try_Allocate
(Item : in out View;
Requested_Size : Positive;
Value : out Allocation_Handle;
Result : out Allocation_Result)
Parameters
- Item
- Requested_Size
- Value
- Result
Try_Allocate
procedure Try_Allocate
(Item : in out View;
Requested_Size : Positive;
Timeout : Wait_Timeout;
Value : out Allocation_Handle;
Result : out Allocation_Result)
Parameters
- Item
- Requested_Size
- Timeout
- Value
- Result
View
type View is limited private;