added free list test

This commit is contained in:
2026-06-09 00:32:15 +02:00
parent fa1eb41719
commit 3086f768ee
3 changed files with 94 additions and 17 deletions

View File

@@ -69,8 +69,9 @@ typedef struct _MIHP_HeapMemoryAreaHeader
struct _MIHP_HeapMemoryAreaHeader* NextArea;
struct _MIHP_HeapMemoryAreaHeader* PreviousArea;
struct _MIHP_Heap* OwningHeap;
struct _MIHP_HeapSegmentHeader* FirstSegment;
struct _MIHP_Heap* OwningHeap;
struct _MIHP_HeapSegmentHeader* FirstSegment;
struct _MIHP_HeapSegmentHeaderFreePayload* FirstFreeSegment;
uint32_t Checksum; // Checksum must be the last member !
@@ -92,6 +93,12 @@ typedef struct _MIHP_HeapSegmentHeader
} MIHP_HeapSegmentHeader;
typedef struct _MIHP_HeapSegmentHeaderFreePayload
{
struct _MIHP_HeapSegmentHeaderFreePayload* PreviousFreeSegment;
struct _MIHP_HeapSegmentHeaderFreePayload* NextFreeSegment;
} MIHP_HeapSegmentHeaderFreePayload;
typedef struct _MIHP_HeapCorruptionInfo
{
uint8_t Type;
@@ -134,6 +141,12 @@ bool MIHP_UninitializeHeapSegment(MIHP_HeapSegmentHeader* segment);
bool MIHP_SplitHeapSegment(MIHP_HeapSegmentHeader* sourceSegment, size_t newSegmentSize, MIHP_HeapSegmentHeader** outNewSegment);
bool MIHP_MergeHeapSegments(MIHP_HeapSegmentHeader* sourceSegment, MIHP_HeapSegmentHeader* segmentToAbsorb);
void MIHP_AddSegmentToFreeList(MIHP_Heap* heap, MIHP_HeapSegmentHeader* segment);
void MIHP_RemoveSegmentFromFreeList(MIHP_Heap* heap, MIHP_HeapSegmentHeader* segment);
void* MIHP_GetSegmentPayloadPtr(MIHP_Heap* heap, MIHP_HeapSegmentHeader* segment);
MIHP_HeapSegmentHeader* MIHP_GetSegmentHeaderPtr(MIHP_Heap* heap, void* payloadPtr);
size_t MIHP_GetHeapAlignedSize(const MIHP_Heap* heap, size_t size);
uint32_t MIHP_HashMemoryRegion(const void* data, size_t size);