Difference between revisions of "Unit HeapManager"
From Ultibo.org
Line 10: | Line 10: | ||
---- | ---- | ||
− | '' | + | |
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Heap specific constants''' <code> HEAP_MIN_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HEAP_MIN_BLOCK = 33;</code> | ||
+ | | SizeOf(THeapBlock) + 1 | ||
+ | |- | ||
+ | | <code>HEAP_MIN_ALIGN = 64;</code> | ||
+ | | SizeOf(THeapBlock) * 2 Must be greater than or equal to HEAP_MIN_BLOCK, must be a power of 2 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Heap signature constants''' <code> HEAP_SIGNATURE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HEAP_SIGNATURE = $E84DF600;</code> | ||
+ | | style="width: 50%;"| | ||
+ | |- | ||
+ | | <code>HEAP_SIGNATURE_MASK = $FFFFFF00;</code> | ||
+ | | | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Heap block state constants''' <code> HEAP_STATE_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HEAP_STATE_FREE = 0;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HEAP_STATE_USED = 1;</code> | ||
+ | | | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HEAP_STATE_MASK = $000000FF;</code> | ||
+ | | | ||
+ | |- | ||
+ | | <code>HEAP_STATE_ALL = 2;</code> | ||
+ | | Only for use by GetHeapBlockCount/GetHeapBlockMin/GetHeapBlockMax | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Heap block flag constants''' <code> HEAP_FLAG_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_NORMAL = $00000000;</code> | ||
+ | | A normal memory block | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_SHARED = $00000001;</code> | ||
+ | | A sharable memory block, usually marked as sharable in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_LOCAL = $00000002;</code> | ||
+ | | A local memory block with an affinity to a specific processor, usually marked as non global in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_CODE = $00000004;</code> | ||
+ | | A code memory block (with an optional affinity to a specific processor), usually marked as executable in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_DEVICE = $00000008;</code> | ||
+ | | A device memory block, usually marked as device memory in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_NOCACHE = $00000010;</code> | ||
+ | | A non cached memory block, usually marked as not cacheable in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_NONSHARED = $00000020;</code> | ||
+ | | A non shared memory block, usually marked as not shareable in the page tables of the memory management unit | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_LOCKED = $00000040;</code> | ||
+ | | A locked memory block (Not currently implemented in Ultibo) | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_IRQ = $00000080;</code> | ||
+ | | An IRQ allocatable memory block | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_FIQ = $00000100;</code> | ||
+ | | An FIQ allocatable memory block | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_RECLAIM = $00000200;</code> | ||
+ | | A reclaimable memory block (eg Disk Cache)(with a registered callback to reclaim as required for normal memory) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_ALL = $FFFFFFFF;</code> | ||
+ | | Only for use by GetHeapBlockCount/GetHeapBlockMin/GetHeapBlockMax | ||
+ | |- | ||
+ | | <code>HEAP_FLAG_INVALID = $FFFFFFFF;</code> | ||
+ | | Return value from MemFlags/IRQ/FIQ on invalid | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
+ | <div class="toccolours mw-collapsible mw-collapsed" style="border: 1; font-family: arial; padding-top: 20px; padding-bottom: 15px;"> | ||
+ | <div style="font-size: 14px; padding-left: 12px;">'''Heap small block constants''' <code> HEAP_SMALL_* </code></div> | ||
+ | <div class="mw-collapsible-content" style="text-align: left; padding-left: 5px;"> | ||
+ | {| class="wikitable" style="font-size: 14px; background: white;" | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_MIN = 32;</code> | ||
+ | | SizeOf(THeapBlock) Minimum size of a small heap block | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_MAX = SIZE_4K;</code> | ||
+ | | Maximum size of a small heap block | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_ALIGN = 4;</code> | ||
+ | | SizeOf(LongWord); Alignment for small heap blocks | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_SHIFT = 2;</code> | ||
+ | | Size to Index conversion (Divide by 4) | ||
+ | |- | ||
+ | |colspan="2"| | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_LOW = (HEAP_SMALL_MIN div HEAP_SMALL_ALIGN);</code> | ||
+ | | 8 | ||
+ | |- | ||
+ | | <code>HEAP_SMALL_HIGH = (HEAP_SMALL_MAX div HEAP_SMALL_ALIGN);</code> | ||
+ | | 1024 | ||
+ | |- | ||
+ | |} | ||
+ | </div></div> | ||
+ | <br /> | ||
=== Type definitions === | === Type definitions === |
Revision as of 04:51, 24 November 2016
Return to Unit Reference
Contents
[hide]Description
To be documented
Constants
[Expand]
Heap specific constants
HEAP_MIN_*
[Expand]
Heap signature constants
HEAP_SIGNATURE_*
[Expand]
Heap block state constants
HEAP_STATE_*
[Expand]
Heap block flag constants
HEAP_FLAG_*
[Expand]
Heap small block constants
HEAP_SMALL_*
Type definitions
To be documented
Public variables
To be documented
Function declarations
Initialization functions
[Expand]
function RequestHeapBlock(Hint:Pointer; Size:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Request registration a Heap Block with specified flags and affinity within an existing block
[Expand]
function RequestSharedHeapBlock(Hint:Pointer; Size:PtrUInt):Pointer;
Description: Request registration of a Shared Heap Block within an existing block
[Expand]
function RequestLocalHeapBlock(Hint:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Request registration of a Local Heap Block within an existing block
[Expand]
function RequestCodeHeapBlock(Hint:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Request registration of a Code Heap Block within an existing block
[Expand]
function RequestDeviceHeapBlock(Hint:Pointer; Size:PtrUInt):Pointer;
Description: Request registration of a Device Heap Block within an existing block
[Expand]
function RequestNoCacheHeapBlock(Hint:Pointer; Size:PtrUInt):Pointer;
Description: Request registration of a Non Cached Heap Block within an existing block
[Expand]
function RequestNonSharedHeapBlock(Hint:Pointer; Size:PtrUInt):Pointer;
Description: Request registration of a Non Shared Heap Block within an existing block
[Expand]
function RequestIRQHeapBlock(Hint:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Request registration of an IRQ Heap Block within an existing block
[Expand]
function RequestFIQHeapBlock(Hint:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Request registration of an FIQ Heap Block within an existing block
Heap functions
[Expand]
function GetMemEx(Size:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Allocate a block of memory with the flags and affinity requested
[Expand]
function GetAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate a block of normal memory aligned on a multiple of the alignment value
[Expand]
function GetAlignedMemEx(Size,Alignment:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Allocate a block of memory aligned on a multiple of the alignment value with the flags and affinity requested
[Expand]
function GetSharedMem(Size:PtrUInt):Pointer;
Description: Allocate a block of shared memory
[Expand]
function GetSharedAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate a block of shared memory aligned on a multiple of the alignment value
[Expand]
function GetLocalMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of local memory
[Expand]
function GetLocalAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of local memory aligned on a multiple of the alignment value
[Expand]
function GetCodeMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of code memory
[Expand]
function GetCodeAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of code memory aligned on a multiple of the alignment value
[Expand]
function GetDeviceMem(Size:PtrUInt):Pointer;
Description: Allocate a block of device memory
[Expand]
function GetDeviceAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate a block of device memory aligned on a multiple of the alignment value
[Expand]
function GetNoCacheMem(Size:PtrUInt):Pointer;
Description: Allocate a block of non cached memory
[Expand]
function GetNoCacheAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate a block of non cached memory aligned on a multiple of the alignment value
[Expand]
function GetNonSharedMem(Size:PtrUInt):Pointer;
Description: Allocate a block of non shared memory
[Expand]
function GetNonSharedAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate a block of non shared memory aligned on a multiple of the alignment value
[Expand]
function GetIRQMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of IRQ memory
[Expand]
function GetIRQAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of IRQ memory aligned on a multiple of the alignment value
[Expand]
function GetFIQMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of FIQ memory
[Expand]
function GetFIQAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate a block of FIQ memory aligned on a multiple of the alignment value
[Expand]
function AllocMemEx(Size:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Allocate and clear a block of memory with the flags and affinity requested
[Expand]
function ReAllocMemEx(var Addr:Pointer; Size:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Reallocate a block of memory with the flags and affinity requested
[Expand]
function AllocAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate and clear a block of normal memory aligned on a multiple of the alignment value
[Expand]
function AllocAlignedMemEx(Size,Alignment:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Allocate and clear a block of normal memory aligned on a multiple of the alignment value with the flags and affinity requested
[Expand]
function ReAllocAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt):Pointer;
Description: Reallocate a block of normal memory aligned on a multiple of the alignment value
[Expand]
function ReAllocAlignedMemEx(var Addr:Pointer; Size,Alignment:PtrUInt; Flags,Affinity:LongWord):Pointer;
Description: Reallocate a block of memory aligned on a multiple of the alignment value with the flags and affinity requested
[Expand]
function AllocSharedMem(Size:PtrUInt):Pointer;
Description: Allocate and clear a block of shared memory
[Expand]
function AllocSharedAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate and clear a block of shared memory aligned on a multiple of the alignment value
[Expand]
function ReAllocSharedMem(var Addr:Pointer; Size:PtrUInt):Pointer;
Description: Reallocate a block of shared memory
[Expand]
function ReAllocSharedAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt):Pointer;
Description: Reallocate a block of shared memory aligned on a multiple of the alignment value
[Expand]
function AllocLocalMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of local memory
[Expand]
function AllocLocalAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of local memory aligned on a multiple of the alignment value
[Expand]
function ReAllocLocalMem(var Addr:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of local memory
[Expand]
function ReAllocLocalAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of local memory aligned on a multiple of the alignment value
[Expand]
function AllocCodeMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of code memory
[Expand]
function AllocCodeAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of code memory aligned on a multiple of the alignment value
[Expand]
function ReAllocCodeMem(var Addr:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of code memory
[Expand]
function ReAllocCodeAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of code memory aligned on a multiple of the alignment value
[Expand]
function AllocDeviceMem(Size:PtrUInt):Pointer;
Description: Allocate and clear a block of device memory
[Expand]
function AllocDeviceAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate and clear a block of device memory aligned on a multiple of the alignment value
[Expand]
function ReAllocDeviceMem(var Addr:Pointer; Size:PtrUInt):Pointer;
Description: Reallocate a block of device memory
[Expand]
function ReAllocDeviceAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt):Pointer;
Description: Reallocate a block of device memory aligned on a multiple of the alignment value
[Expand]
function AllocNoCacheMem(Size:PtrUInt):Pointer;
Description: Allocate and clear a block of non cached memory
[Expand]
function AllocNoCacheAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate and clear a block of non cached memory aligned on a multiple of the alignment value
[Expand]
function ReAllocNoCacheMem(var Addr:Pointer; Size:PtrUInt):Pointer;
Description: Reallocate a block of non cached memory
[Expand]
function ReAllocNoCacheAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt):Pointer;
Description: Reallocate a block of non cached memory aligned on a multiple of the alignment value
[Expand]
function AllocNonSharedMem(Size:PtrUInt):Pointer;
Description: Allocate and clear a block of non shared memory
[Expand]
function AllocNonSharedAlignedMem(Size,Alignment:PtrUInt):Pointer;
Description: Allocate and clear a block of non shared memory aligned on a multiple of the alignment value
[Expand]
function ReAllocNonSharedMem(var Addr:Pointer; Size:PtrUInt):Pointer;
Description: Reallocate a block of non shared memory
[Expand]
function ReAllocNonSharedAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt):Pointer;
Description: Reallocate a block of non shared memory aligned on a multiple of the alignment value
[Expand]
function AllocIRQMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of IRQ memory
[Expand]
function AllocIRQAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of IRQ memory aligned on a multiple of the alignment value
[Expand]
function ReAllocIRQMem(var Addr:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of IRQ memory
[Expand]
function ReAllocIRQAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of IRQ memory aligned on a multiple of the alignment value
[Expand]
function AllocFIQMem(Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of FIQ memory
[Expand]
function AllocFIQAlignedMem(Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Allocate and clear a block of FIQ memory aligned on a multiple of the alignment value
[Expand]
function ReAllocFIQMem(var Addr:Pointer; Size:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of FIQ memory
[Expand]
function ReAllocFIQAlignedMem(var Addr:Pointer; Size,Alignment:PtrUInt; Affinity:LongWord):Pointer;
Description: Reallocate a block of FIQ memory aligned on a multiple of the alignment value
[Expand]
function SizeIRQMem(Addr:Pointer):PtrUInt;
Description: Return the size of an allocated block of IRQ memory
[Expand]
function SizeFIQMem(Addr:Pointer):PtrUInt;
Description: Return the size of an allocated block of FIQ memory
[Expand]
function MemFlags(Addr:Pointer):LongWord;
Description: Return the flags of an allocated block of memory
[Expand]
function MemFlagsIRQ(Addr:Pointer):LongWord;
Description: Return the flags of an allocated block of IRQ memory
[Expand]
function MemFlagsFIQ(Addr:Pointer):LongWord;
Description: Return the flags of an allocated block of FIQ memory
[Expand]
function GetHeapStatistics:THeapStatistics;
Description: Return detailed statistics for the heap manager
[Expand]
function GetHeapBlockCount(State:LongWord):LongWord;
Description: Get the total number of current heap blocks based on state
[Expand]
function GetHeapBlockCountEx(State,Flags,Affinity:LongWord):LongWord;
Description: Get the number of current heap blocks based on state, flags and affinity
[Expand]
function GetHeapBlockMin(State:LongWord):LongWord;
Description: Get the minimum size of current heap blocks based on state
[Expand]
function GetHeapBlockMinEx(State,Flags,Affinity:LongWord):LongWord;
Description: Get the minimum size of current heap blocks based on state, flags and affinity
[Expand]
function GetHeapBlockMax(State:LongWord):LongWord;
Description: Get the maximum size of current heap blocks based on state
[Expand]
function GetHeapBlockMaxEx(State,Flags,Affinity:LongWord):LongWord;
Description: Get the maximum size of current heap blocks based on state, flags and affinity
[Expand]
function CreateHeapSnapshotEx(State,Flags,Affinity:LongWord):PHeapSnapshot;
Description: To be documented
[Expand]
function DestroyHeapSnapshot(Snapshot:PHeapSnapshot):LongWord;
Description: To be documented
Internal functions
[Expand]
function GetHeapBlock(Address:Pointer):PHeapBlock;
Description: Get the Heap Block referenced by Address
[Expand]
function FindHeapBlock(Address:Pointer; Size:PtrUInt):PHeapBlock;
Description: Find the Heap Block containing Address up to the Size specified
[Expand]
function AddHeapBlock(Block:PHeapBlock):Boolean;
Description: Add a heap block, sorted by ascending Address order
[Expand]
function SplitHeapBlock(Block:PHeapBlock; Size:PtrUInt):PHeapBlock;
Description: Split a heap block at the size indicated
[Expand]
function MergeHeapBlock(Block:PHeapBlock):PHeapBlock;
Description: Merge a heap block with Prev or Next blocks if free
[Expand]
function GetFreeBlock(Size:PtrUInt):PHeapBlock;
Description: Get a free block of at least the size indicated
[Expand]
function GetFreeBlockEx(Size:PtrUInt; Flags,Affinity:LongWord):PHeapBlock;
Description: Get a free block of at least the size indicated with the flags and affinity requested
[Expand]
function FindFreeBlock(Size:PtrUInt):PHeapBlock;
Description: Find a free block of at least the size indicated with no flags or affinity which is alignable to the HEAP_REQUEST_ALIGNMENT value
[Expand]
function AddFreeBlock(Block:PHeapBlock):Boolean;
Description: Add a free block, sorted by ascending Size order
[Expand]
function GetUsedBlock(Address:Pointer):PHeapBlock;
Description: Get a used block by address
[Expand]
function CheckUsedBlock(Address:Pointer):Boolean; inline;
Description: Check a used block by address
[Expand]
function GetIRQBlock(Address:Pointer):PHeapBlock;
Description: Get the IRQ Heap Block referenced by Address
[Expand]
function CheckIRQBlock(Address:Pointer):Boolean;
Description: Check the IRQ Heap Block referenced by Address
[Expand]
function AddIRQBlock(Block:PHeapBlock):Boolean;
Description: Add an IRQ heap block, sorted by ascending Address order
[Expand]
function SplitIRQBlock(Block:PHeapBlock; Size:PtrUInt):PHeapBlock;
Description: Split an IRQ heap block at the size indicated
[Expand]
function MergeIRQBlock(Block:PHeapBlock):PHeapBlock;
Description: Merge an IRQ heap block with Prev or Next blocks if free
[Expand]
function GetFreeIRQBlock(Size:PtrUInt; Affinity:LongWord):PHeapBlock;
Description: Get a free IRQ block of at least the size indicated
[Expand]
function AddFreeIRQBlock(Block:PHeapBlock):Boolean;
Description: Add a free IRQ block, sorted by ascending Size order
[Expand]
function RemoveFreeIRQBlock(Block:PHeapBlock):Boolean;
Description: Remove a free IRQ block
[Expand]
function GetFIQBlock(Address:Pointer):PHeapBlock;
Description: Get the FIQ Heap Block referenced by Address
[Expand]
function CheckFIQBlock(Address:Pointer):Boolean;
Description: Check the FIQ Heap Block referenced by Address
[Expand]
function AddFIQBlock(Block:PHeapBlock):Boolean;
Description: Add an FIQ heap block, sorted by ascending Address order
[Expand]
function SplitFIQBlock(Block:PHeapBlock; Size:PtrUInt):PHeapBlock;
Description: Split an FIQ heap block at the size indicated
[Expand]
function MergeFIQBlock(Block:PHeapBlock):PHeapBlock;
Description: Merge an FIQ heap block with Prev or Next blocks if free
[Expand]
function GetFreeFIQBlock(Size:PtrUInt; Affinity:LongWord):PHeapBlock;
Description: Get a free FIQ block of at least the size indicated
[Expand]
function AddFreeFIQBlock(Block:PHeapBlock):Boolean;
Description: Add a free FIQ block, sorted by ascending Size order
[Expand]
function RemoveFreeFIQBlock(Block:PHeapBlock):Boolean;
Description: Remove a free FIQ block
RTL heap manager functions
[Expand]
function SysFreeMemSize(Addr:Pointer; Size:PtrUInt):PtrUInt;
Description: Free a block of memory
[Expand]
function SysAllocMem(Size:PtrUInt):Pointer;
Description: Allocate and clear a block of normal memory
[Expand]
function SysReAllocMem(var Addr:Pointer; Size:PtrUInt):Pointer;
Description: Reallocate a block of normal memory
[Expand]
function SysSizeMem(Addr:Pointer):PtrUInt;
Description: Return the size of an allocated block of memory
[Expand]
function SysGetHeapStatus:THeapStatus;
Description: Return status information for the heap manager
[Expand]
function SysGetFPCHeapStatus:TFPCHeapStatus;
Description: Return status information for the heap manager
Helper functions
Return to Unit Reference