From cfa703f013a1e595a418e47ac05df06e9ae4f9b8 Mon Sep 17 00:00:00 2001 From: Anghelo Carvajal Date: Wed, 9 Aug 2023 20:45:25 -0400 Subject: `malloc.c` (#42) * malloc * match * bss * Fix naming * move __osMalloc to libc64 folder * move headers to libc64 folder --- include/boot_variables.h | 1 - include/libc64/malloc.h | 17 +++++++++++++++++ include/libc64/osmalloc.h | 34 ++++++++++++++++++++++++++++++++++ include/malloc.h | 17 ----------------- include/osmalloc.h | 34 ---------------------------------- 5 files changed, 51 insertions(+), 52 deletions(-) create mode 100644 include/libc64/malloc.h create mode 100644 include/libc64/osmalloc.h delete mode 100644 include/malloc.h delete mode 100644 include/osmalloc.h (limited to 'include') diff --git a/include/boot_variables.h b/include/boot_variables.h index 577b212..c85f519 100644 --- a/include/boot_variables.h +++ b/include/boot_variables.h @@ -281,7 +281,6 @@ extern OSPiHandle* gCartHandle; // TODO: Determine where this goes // extern UNK_TYPE B_80041995_jp; // extern UNK_TYPE B_80041998_jp; -// extern UNK_TYPE B_800419C0_jp; // extern UNK_TYPE B_800419F0_jp; // extern UNK_TYPE B_80044684_jp; diff --git a/include/libc64/malloc.h b/include/libc64/malloc.h new file mode 100644 index 0000000..47367a3 --- /dev/null +++ b/include/libc64/malloc.h @@ -0,0 +1,17 @@ +#ifndef MALLOC_H +#define MALLOC_H + +#include "ultra64.h" + +void* malloc(size_t size); +void* malloc_r(size_t size); +void* realloc(void* ptr, size_t size); +void free(void* ptr); +void* calloc(s32 num, size_t size); +void GetFreeArena(size_t* outMaxFree, size_t* outFree, size_t* outAlloc); +s32 CheckArena(void); +void MallocInit(void* heap, size_t size); +void MallocCleanup(void); +s32 MallocIsInitialized(void); + +#endif diff --git a/include/libc64/osmalloc.h b/include/libc64/osmalloc.h new file mode 100644 index 0000000..9be9095 --- /dev/null +++ b/include/libc64/osmalloc.h @@ -0,0 +1,34 @@ +#ifndef OS_MALLOC_H +#define OS_MALLOC_H + +#include "ultra64.h" + +typedef struct ArenaNode { + /* 0x0 */ s16 magic; // Should always be 0x7373 + /* 0x2 */ s16 isFree; + /* 0x4 */ size_t size; + /* 0x8 */ struct ArenaNode* next; + /* 0xC */ struct ArenaNode* prev; +} ArenaNode; // size = 0x10 + +typedef struct Arena { + /* 0x00 */ ArenaNode* head; + /* 0x04 */ void* start; + /* 0x08 */ OSMesgQueue lock; + /* 0x20 */ u8 unk20; + /* 0x21 */ u8 isInit; + /* 0x22 */ u8 flag; +} Arena; // size = 0x24 + +void __osMallocInit(Arena* arena, void* heap, size_t size); +void __osMallocCleanup(Arena* arena); +u8 __osMallocIsInitalized(Arena* arena); +void* __osMalloc(Arena* arena, size_t size); +void* __osMallocR(Arena* arena, size_t size); +void __osFree(Arena* arena, void* ptr); +void* __osRealloc(Arena* arena, void* ptr, size_t newSize); +void __osGetFreeArena(Arena* arena, size_t* outMaxFree, size_t* outFree, size_t* outAlloc); +void ArenaImpl_FaultClient(Arena* arena); +s32 __osCheckArena(Arena* arena); + +#endif diff --git a/include/malloc.h b/include/malloc.h deleted file mode 100644 index dfc2bc4..0000000 --- a/include/malloc.h +++ /dev/null @@ -1,17 +0,0 @@ -#ifndef MALLOC_H -#define MALLOC_H - -#include "ultra64.h" - -void* malloc(size_t size); -void* malloc_r(size_t size); -// void realloc(); -void free(void* ptr); -// void calloc(); -// void DisplayArena(); -// void GetFreeArena(); -// void MallocInit(); -// void MallocCleanup(); -// void MallocIsInitialized(); - -#endif diff --git a/include/osmalloc.h b/include/osmalloc.h deleted file mode 100644 index 9be9095..0000000 --- a/include/osmalloc.h +++ /dev/null @@ -1,34 +0,0 @@ -#ifndef OS_MALLOC_H -#define OS_MALLOC_H - -#include "ultra64.h" - -typedef struct ArenaNode { - /* 0x0 */ s16 magic; // Should always be 0x7373 - /* 0x2 */ s16 isFree; - /* 0x4 */ size_t size; - /* 0x8 */ struct ArenaNode* next; - /* 0xC */ struct ArenaNode* prev; -} ArenaNode; // size = 0x10 - -typedef struct Arena { - /* 0x00 */ ArenaNode* head; - /* 0x04 */ void* start; - /* 0x08 */ OSMesgQueue lock; - /* 0x20 */ u8 unk20; - /* 0x21 */ u8 isInit; - /* 0x22 */ u8 flag; -} Arena; // size = 0x24 - -void __osMallocInit(Arena* arena, void* heap, size_t size); -void __osMallocCleanup(Arena* arena); -u8 __osMallocIsInitalized(Arena* arena); -void* __osMalloc(Arena* arena, size_t size); -void* __osMallocR(Arena* arena, size_t size); -void __osFree(Arena* arena, void* ptr); -void* __osRealloc(Arena* arena, void* ptr, size_t newSize); -void __osGetFreeArena(Arena* arena, size_t* outMaxFree, size_t* outFree, size_t* outAlloc); -void ArenaImpl_FaultClient(Arena* arena); -s32 __osCheckArena(Arena* arena); - -#endif -- cgit v1.2.3