mirror of
https://github.com/encounter/ac-decomp.git
synced 2026-03-30 10:57:04 -07:00
69 lines
2.0 KiB
C
69 lines
2.0 KiB
C
#ifndef OS_MALLOC_H
|
|
#define OS_MALLOC_H
|
|
|
|
#include "types.h"
|
|
#include "dolphin/os/OSTime.h"
|
|
#include "libultra/osThread.h"
|
|
#include "libultra/osMesg.h"
|
|
#include "libultra/ultratypes.h"
|
|
|
|
struct ArenaNode;
|
|
|
|
typedef struct Arena {
|
|
/* 0x00 */ struct ArenaNode* head;
|
|
/* 0x04 */ void* start;
|
|
/* 0x08 */ OSMesgQueue lockQueue;
|
|
/* 0x20 */ u8 unk_20;
|
|
/* 0x21 */ u8 isInit;
|
|
/* 0x22 */ u8 flag;
|
|
/* 0x24 */ u8 pad[0x2C - 0x24];
|
|
} Arena; // size = 0x2C
|
|
|
|
typedef struct ArenaNode {
|
|
/* 0x00 */ s16 magic;
|
|
/* 0x02 */ s16 isFree;
|
|
/* 0x04 */ u32 size;
|
|
/* 0x08 */ struct ArenaNode* next;
|
|
/* 0x0C */ struct ArenaNode* prev;
|
|
/* 0x10 */ const char* filename;
|
|
/* 0x14 */ s32 line;
|
|
/* 0x18 */ OSId threadId;
|
|
/* 0x1C */ Arena* arena;
|
|
/* 0x20 */ OSTime time;
|
|
/* 0x28 */ u8 unk_28[0x30 - 0x28]; // probably padding
|
|
} ArenaNode; // size = 0x30
|
|
|
|
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*);
|
|
extern int __osMallocIsInitalized(Arena*);
|
|
|
|
extern int __osMalloc_FreeBlockTest_Enable;
|
|
|
|
#endif
|