wut v1.8.0
Wii U Toolchain
Loading...
Searching...
No Matches
memblockheap.h
Go to the documentation of this file.
1#pragma once
2#include <wut.h>
3#include "memheap.h"
4
11#ifdef __cplusplus
12extern "C" {
13#endif
14
18
20{
21 WUT_UNKNOWN_BYTES(0x8);
22
25
27 uint32_t blockCount;
28};
29WUT_CHECK_OFFSET(MEMBlockHeapTracking, 0x08, blocks);
30WUT_CHECK_OFFSET(MEMBlockHeapTracking, 0x0C, blockCount);
31WUT_CHECK_SIZE(MEMBlockHeapTracking, 0x10);
32
50WUT_CHECK_OFFSET(MEMBlockHeapBlock, 0x00, start);
51WUT_CHECK_OFFSET(MEMBlockHeapBlock, 0x04, end);
52WUT_CHECK_OFFSET(MEMBlockHeapBlock, 0x08, isFree);
53WUT_CHECK_OFFSET(MEMBlockHeapBlock, 0x0c, prev);
54WUT_CHECK_OFFSET(MEMBlockHeapBlock, 0x10, next);
55WUT_CHECK_SIZE(MEMBlockHeapBlock, 0x14);
56
79WUT_CHECK_OFFSET(MEMBlockHeap, 0x00, header);
80WUT_CHECK_OFFSET(MEMBlockHeap, 0x40, defaultTrack);
81WUT_CHECK_OFFSET(MEMBlockHeap, 0x50, defaultBlock);
82WUT_CHECK_OFFSET(MEMBlockHeap, 0x64, firstBlock);
83WUT_CHECK_OFFSET(MEMBlockHeap, 0x68, lastBlock);
84WUT_CHECK_OFFSET(MEMBlockHeap, 0x6C, firstFreeBlock);
85WUT_CHECK_OFFSET(MEMBlockHeap, 0x70, numFreeBlocks);
86WUT_CHECK_SIZE(MEMBlockHeap, 0x74);
87
90 void *start,
91 void *end,
93 uint32_t size,
94 uint32_t flags);
95
96void *
98
99int
101 MEMBlockHeapTracking *tracking,
102 uint32_t size);
103
104void *
106 void *addr,
107 uint32_t size);
108
109void *
111 uint32_t size,
112 int32_t align);
113
114void
116 void *data);
117
118uint32_t
120 int32_t align);
121
122uint32_t
124
125uint32_t
127
128#ifdef __cplusplus
129}
130#endif
131
MEMHeapHeader header
MEMBlockHeapBlock * next
Link to next block, always set.
uint32_t blockCount
Number of blocks in this tracking heap.
MEMBlockHeapBlock * firstBlock
First block in this heap.
uint32_t numFreeBlocks
Free block count.
MEMBlockHeapBlock * blocks
Pointer to first memory block.
void * start
First address of the data region this block has allocated.
void * end
End address of the data region this block has allocated.
MEMBlockHeapBlock * firstFreeBlock
First free block.
BOOL isFree
TRUE if the block is free, FALSE if allocated.
MEMBlockHeapBlock defaultBlock
Default block, used so we don't have an empty block list.
MEMBlockHeapBlock * prev
Link to previous block, note that this is only set for allocated blocks.
MEMBlockHeapTracking defaultTrack
Default tracking heap, tracks only defaultBlock.
MEMBlockHeapBlock * lastBlock
Last block in this heap.
int MEMAddBlockHeapTracking(MEMHeapHandle heap, MEMBlockHeapTracking *tracking, uint32_t size)
void * MEMDestroyBlockHeap(MEMHeapHandle heap)
uint32_t MEMGetTrackingLeftInBlockHeap(MEMHeapHandle heap)
MEMHeapHandle MEMInitBlockHeap(MEMBlockHeap *heap, void *start, void *end, MEMBlockHeapTracking *blocks, uint32_t size, uint32_t flags)
void * MEMAllocFromBlockHeapEx(MEMHeapHandle heap, uint32_t size, int32_t align)
void * MEMAllocFromBlockHeapAt(MEMHeapHandle heap, void *addr, uint32_t size)
uint32_t MEMGetTotalFreeSizeForBlockHeap(MEMHeapHandle heap)
void MEMFreeToBlockHeap(MEMHeapHandle heap, void *data)
uint32_t MEMGetAllocatableSizeForBlockHeapEx(MEMHeapHandle heap, int32_t align)
int32_t BOOL
Definition wut_types.h:7