diff options
| author | Anghelo Carvajal <angheloalf95@gmail.com> | 2023-08-09 20:55:50 -0400 |
|---|---|---|
| committer | GitHub <noreply@github.com> | 2023-08-09 20:55:50 -0400 |
| commit | 56b4e612cc8fc1af7c051592e850ca1aac02e39e (patch) | |
| tree | 1b0a4d9fd080bc49d9a8779b5ed073df7c626a71 /src/code/m_malloc.c | |
| parent | c7729c05c07cf0d60a70cd6c4f456069604a1f43 (diff) | |
`m_malloc.c` (#41)
* match
* bss
* format
* fix
Diffstat (limited to 'src/code/m_malloc.c')
| -rw-r--r-- | src/code/m_malloc.c | 55 |
1 files changed, 55 insertions, 0 deletions
diff --git a/src/code/m_malloc.c b/src/code/m_malloc.c new file mode 100644 index 0000000..a63ac74 --- /dev/null +++ b/src/code/m_malloc.c @@ -0,0 +1,55 @@ +#include "m_malloc.h" +#include "libc64/osmalloc.h" +#include "fault.h" + +Arena zelda_arena; +FaultClient B_80141FC8_jp; + +void* zelda_malloc(size_t size) { + return __osMalloc(&zelda_arena, size); +} + +void* zelda_malloc_r(size_t size) { + return __osMallocR(&zelda_arena, size); +} + +void* zelda_realloc(void* ptr, size_t size) { + __osRealloc(&zelda_arena, ptr, size); +} + +void zelda_free(void* ptr) { + __osFree(&zelda_arena, ptr); +} + +void* zelda_calloc(s32 num, size_t size) { + void* ptr; + u32 n = num * size; + + ptr = __osMalloc(&zelda_arena, n); + if (ptr != NULL) { + bzero(ptr, n); + } + return ptr; +} + +void zelda_GetFreeArena(size_t* outMaxFree, size_t* outFree, size_t* outAlloc) { + __osGetFreeArena(&zelda_arena, outMaxFree, outFree, outAlloc); +} + +s32 zelda_CheckArena(void) { + return __osCheckArena(&zelda_arena); +} + +void zelda_InitArena(void* heap, size_t size) { + __osMallocInit(&zelda_arena, heap, size); + Fault_AddClient(&B_80141FC8_jp, (void*)ArenaImpl_FaultClient, &zelda_arena, NULL); +} + +void zelda_CleanupArena(void) { + Fault_RemoveClient(&B_80141FC8_jp); + __osMallocCleanup(&zelda_arena); +} + +s32 zelda_MallocIsInitalized(void) { + return __osMallocIsInitalized(&zelda_arena); +} |
