diff --git a/include/coreinit/frameheap.h b/include/coreinit/frameheap.h new file mode 100644 index 0000000..5b8ba9a --- /dev/null +++ b/include/coreinit/frameheap.h @@ -0,0 +1,62 @@ +#pragma once +#include + +WUT_LIB_HEADER_START + +typedef uint32_t MEMFrameHeapFreeMode; + +enum MEMFrameHeapFreeMode +{ + MEM_FRAME_HEAP_FREE_FROM_BOTTOM = 1 << 0, + MEM_FRAME_HEAP_FREE_FROM_TOP = 1 << 1, +}; + +MEMFrameHeap * +MEMCreateFrmHeap(MEMFrameHeap *heap, + uint32_t size); + +MEMFrameHeap * +MEMCreateFrmHeapEx(MEMFrameHeap *heap, + uint32_t size, + uint16_t flags); + +void * +MEMDestroyFrmHeap(MEMFrameHeap *heap); + +void * +MEMAllocFromFrmHeap(MEMFrameHeap *heap, + uint32_t size); + +void * +MEMAllocFromFrmHeapEx(MEMFrameHeap *heap, + uint32_t size, + int alignment); + +void +MEMFreeToFrmHeap(MEMFrameHeap *heap, + MEMFrameHeapFreeMode mode); + +BOOL +MEMRecordStateForFrmHeap(MEMFrameHeap *heap, + uint32_t tag); + +BOOL +MEMFreeByStateToFrmHeap(MEMFrameHeap *heap, + uint32_t tag); + +uint32_t +MEMAdjustFrmHeap(MEMFrameHeap *heap); + +uint32_t +MEMResizeForMBlockFrmHeap(MEMFrameHeap *heap, + uint32_t addr, + uint32_t size); + +uint32_t +MEMGetAllocatableSizeForFrmHeap(MEMFrameHeap *heap); + +uint32_t +MEMGetAllocatableSizeForFrmHeapEx(MEMFrameHeap *heap, + int alignment); + +WUT_LIB_HEADER_END diff --git a/rpl/libcoreinit/exports.h b/rpl/libcoreinit/exports.h index 6e88aa5..7eefcdf 100644 --- a/rpl/libcoreinit/exports.h +++ b/rpl/libcoreinit/exports.h @@ -113,6 +113,20 @@ EXPORT(MEMGetSizeForMBlockExpHeap); EXPORT(MEMGetGroupIDForMBlockExpHeap); EXPORT(MEMGetAllocDirForMBlockExpHeap); +// coreinit/frameheap.h +EXPORT(MEMCreateFrmHeap); +EXPORT(MEMCreateFrmHeapEx); +EXPORT(MEMDestroyFrmHeap); +EXPORT(MEMAllocFromFrmHeap); +EXPORT(MEMAllocFromFrmHeapEx); +EXPORT(MEMFreeToFrmHeap); +EXPORT(MEMRecordStateForFrmHeap); +EXPORT(MEMFreeByStateToFrmHeap); +EXPORT(MEMAdjustFrmHeap); +EXPORT(MEMResizeForMBlockFrmHeap); +EXPORT(MEMGetAllocatableSizeForFrmHeap); +EXPORT(MEMGetAllocatableSizeForFrmHeapEx); + // coreinit/mutex.h EXPORT(OSInitMutex); EXPORT(OSInitMutexEx);