match m_malloc

This commit is contained in:
Prakxo
2023-04-20 09:40:59 +00:00
parent 4ecb12f3cc
commit c7e7e2e766
5 changed files with 99 additions and 5 deletions
+3
View File
@@ -1,5 +1,8 @@
sys_vimgr.c:
.text: [0x803703F8, 0x80370418]
#m_malloc.c: #can't find zelda_arena
# .text: [0x803BC510, 0x803BC70C]
# .bss: [0x81297CA0, 0x81297CD0]
m_room_type/mRmTp_FtrItemNo2FtrIdx.c:
.text: [0x803E7878, 0x803E78BC]
#m_time.c: # unlinked until function callers that reorder local static variables are implemented.
+2 -1
View File
@@ -52430,7 +52430,6 @@ global:
0x81297A68: l_mEnv_electric_light
0x81297B10: S_get_light_list
0x81297B18: light_list_buf
0x81297CA0: zelda_arena
0x81297D28: l_ml_mail
0x81297E80: Msg_table_rom_start
0x81297E84: Msg_rom_start
@@ -58166,6 +58165,8 @@ rel/dataobject.obj:
0x81106D80: rom_train_3_pal
rel/irqmgr.c:
0x812F357C: this
rel/m_malloc.c:
0x81297CA0: zelda_arena
foresta.rel:
0x80641254: _ctors
0x80641258: _dtors
+29 -4
View File
@@ -32,11 +32,36 @@ typedef struct ArenaNode {
/* 0x28 */ u8 unk_28[0x30-0x28]; // probably padding
} ArenaNode; // size = 0x30
void* __osMalloc(Arena*, size_t);
void __osFree(Arena*, void*);
void __osDisplayArena(Arena*);
void __osGetFreeArena(Arena*, u32*, u32*, u32*);
void setDebugInfo(ArenaNode*, const char*, s32, Arena*);
void arena_lock_init(Arena*);
void arena_lock(Arena*);
void arena_unlock(Arena*);
ArenaNode* get_block_next(ArenaNode*);
ArenaNode* get_block_prev(ArenaNode*);
ArenaNode* search_last_block(Arena*);
void __osMallocInit(Arena*, void*, u32);
void __osMallocAddBlock(Arena*, void*, s32);
void destroy_all_block(Arena*);
void __osMallocCleanup(Arena*);
BOOL __osMallocIsInitialized(Arena*);
void __osMalloc_FreeBlockTest(Arena*, ArenaNode*);
void* __osMallocALign_NoLock(Arena*, u32, u32);
void* __osMalloc_NoLock(Arena*, u32);
void* __osMallocAlign(Arena*, u32, u32);
void* __osMalloc(Arena*, u32);
void* __osMallocR(Arena*, u32);
void __osFree_NoLock(Arena*, void*);
void __osFree(Arena*, void*);
void* __osRealloc(Arena*, void*, u32);
int __osAnalayzeArena(Arena*, u32*);
void __osGetFreeArena(Arena*, u32*, u32*, u32*);
u32 __osGetTotalFreeSize(Arena*);
u32 __osGetFreeSize(Arena*);
u32 __osGetMemBlockSize(Arena*, void*);
void __osDisplayArena(Arena*);
int __osCheckArena(Arena*);
#endif
+19
View File
@@ -0,0 +1,19 @@
#ifndef M_MALLOC_H
#define M_MALLOC_H
#include "libc64/__osMalloc.h"
extern Arena zelda_arena;
void zelda_malloc_align(u32,u32);
void zelda_malloc(u32);
void zelda_malloc_r(u32);
void zelda_free(void*);
void zelda_GetFreeArena(u32*,u32*,u32*);
u32 zelda_GetTotalFreeSize(void);
u32 zelda_GetMemBlockSize(void*);
void zelda_InitArena(void*, u32);
void zelda_AddBlockArena(void*, u32);
void zelda_CleanupArena(void);
void zelda_MallocIsInitialized(void);
#endif
+46
View File
@@ -0,0 +1,46 @@
#include "m_malloc.h"
extern Arena zelda_arena;
void zelda_malloc_align(u32 size, u32 align){
__osMallocAlign(&zelda_arena, size, align);
}
void zelda_malloc(u32 size){
__osMalloc(&zelda_arena,size);
}
void zelda_malloc_r(u32 size){
__osMallocR(&zelda_arena, size);
}
void zelda_free(void* ptr){
__osFree(&zelda_arena, ptr);
}
void zelda_GetFreeArena(size_t* max, size_t* free, size_t* alloc){
__osGetFreeArena(&zelda_arena,max,free,alloc);
}
size_t zelda_GetTotalFreeSize(void){
return __osGetTotalFreeSize(&zelda_arena);
}
size_t zelda_GetMemBlockSize(void* ptr){
return __osGetMemBlockSize(&zelda_arena, ptr);
}
void zelda_InitArena(void* start, u32 size){
__osMallocInit(&zelda_arena, start, size);
}
void zelda_AddBlockArena(void* start, u32 size){
__osMallocAddBlock(&zelda_arena,start, size);
}
void zelda_CleanupArena(void){
__osMallocCleanup(&zelda_arena);
}
void zelda_MallocIsInitalized(void){
__osMallocIsInitalized(&zelda_arena);
}