summaryrefslogtreecommitdiff
path: root/arm9/lib/include/NNS_FND_expheap.h
diff options
context:
space:
mode:
Diffstat (limited to 'arm9/lib/include/NNS_FND_expheap.h')
-rw-r--r--arm9/lib/include/NNS_FND_expheap.h54
1 files changed, 47 insertions, 7 deletions
diff --git a/arm9/lib/include/NNS_FND_expheap.h b/arm9/lib/include/NNS_FND_expheap.h
index 171cacf6..c0008f28 100644
--- a/arm9/lib/include/NNS_FND_expheap.h
+++ b/arm9/lib/include/NNS_FND_expheap.h
@@ -3,13 +3,53 @@
#include "NNS_FND_heapcommon.h"
+typedef struct NNSiFndExpHeapMBlockHead NNSiFndExpHeapMBlockHead;
+
+struct NNSiFndExpHeapMBlockHead
+{
+ u16 signature; // Signature
+ u16 attribute; // Attribute
+ // [8:groupID]
+ // [7:alignment]
+ // [1:temporary flag]
+
+ u32 blockSize; // Block size (data area only)
+
+ NNSiFndExpHeapMBlockHead* pMBHeadPrev; // Previous block
+ NNSiFndExpHeapMBlockHead* pMBHeadNext; // Next block
+};
+
+typedef struct NNSiFndExpMBlockList NNSiFndExpMBlockList;
+
+struct NNSiFndExpMBlockList
+{
+ NNSiFndExpHeapMBlockHead* head; // Pointer for memory block linked to header
+ NNSiFndExpHeapMBlockHead* tail; // Pointer to the memory block linked to the tail of the expanded heap
+};
+
+typedef struct NNSiFndExpHeapHead NNSiFndExpHeapHead;
+
+struct NNSiFndExpHeapHead
+{
+ NNSiFndExpMBlockList mbFreeList; // Free list
+ NNSiFndExpMBlockList mbUsedList; // Used list
+
+ u16 groupID; // Current group ID (lower 8 bits only)
+ u16 feature; // Attribute
+};
+
NNSFndHeapHandle NNS_FndCreateExpHeapEx(void *startAddress, u32 size, u32 optFlag);
-void *NNS_FndAllocFromExpHeapEx(void *param0, u32 param1, s32 param2);
-void NNS_FndDestroyExpHeap();
-void NNS_FndFreeToExpHeap(void *ptr1, void *ptr2);
-u32 NNS_FndGetTotalFreeSizeForExpHeap(void *param0);
-void NNS_FndInitAllocatorForExpHeap(u32 param0, void *param1, u32 param2);
-u32 NNS_FndGetSizeForMBlockExpHeap(void *param0);
-void NNS_FndResizeForMBlockExpHeap(void *ptr1, void *ptr2, u32 param2);
+void *NNS_FndAllocFromExpHeapEx(NNSFndHeapHandle heap, u32 size, int alignment);
+void NNS_FndDestroyExpHeap(NNSFndHeapHandle heap);
+void NNS_FndFreeToExpHeap(NNSFndHeapHandle heap, void *memBlock);
+u32 NNS_FndGetTotalFreeSizeForExpHeap(NNSFndHeapHandle heap);
+u32 NNS_FndGetSizeForMBlockExpHeap(const void *memBlock);
+void NNS_FndResizeForMBlockExpHeap(NNSFndHeapHandle heap, void *memBlock, u32 size);
+
+#define NNS_FndCreateExpHeap(startAddress, size) \
+ NNS_FndCreateExpHeapEx(startAddress, size, 0)
+#define NNS_FndAllocFromExpHeap(heap, size) \
+ NNS_FndAllocFromExpHeapEx(heap, size, NNS_FND_HEAP_DEFAULT_ALIGNMENT)
+
#endif //GUARD_NNS_FND_EXPHEAP_H