Files
ac-decomp/include/libc64/__osMalloc.h
T
2025-05-26 05:51:27 -04:00

64 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"
#ifdef __cplusplus
extern "C" {
#endif // !__cplusplus
#define OSArena_FLAG_CLEAR_MEM_ON_ALLOC (1 << 0)
#define OSArena_FLAG_CLEAR_MEM_ON_FREE (1 << 1)
#define OSArena_FLAG_FREE_BLOCK_TEST (1 << 2)
typedef struct OSMemBlock_ {
/* 0x00 */ s16 magic;
/* 0x02 */ s16 free;
/* 0x04 */ s32 size;
/* 0x08 */ struct OSMemBlock_* next;
/* 0x0C */ struct OSMemBlock_* prev;
/* 0x10 */ const char* file;
/* 0x14 */ s32 line;
/* 0x18 */ OSId threadId;
/* 0x1C */ struct OSArena_* arena;
/* 0x20 */ OSTime time;
/* 0x28 */ u8 pad[0x30 - 0x28];
} OSMemBlock; // size = 0x30
typedef struct OSArena_ {
/* 0x00 */ OSMemBlock* head;
/* 0x04 */ u8* base;
/* 0x08 */ OSMessageQueue lockQueue;
/* 0x20 */ u8 _28;
/* 0x21 */ u8 initialized;
/* 0x22 */ u8 flags;
} OSArena; // size = 0x2C
extern void __osMallocInit(OSArena* arena, u8* base, s32 size);
extern void __osMallocAddBlock(OSArena* arena, u8* base, s32 size);
extern void __osMallocCleanup(OSArena* arena);
extern BOOL __osMallocIsInitalized(OSArena* arena);
extern void* __osMallocAlign(OSArena* arena, u32 size, u32 align);
extern void* __osMalloc(OSArena* arena, u32 size);
extern void* __osMallocR(OSArena* arena, u32 size);
extern void __osFree(OSArena* arena, void* ptr);
extern void* __osRealloc(OSArena* arena, void* ptr, u32 size);
extern void __osGetFreeArena(OSArena* arena, u32* max_free_block_size, u32* free_blocks_size, u32* used_blocks_size);
extern u32 __osGetTotalFreeSize(OSArena* arena);
extern u32 __osGetFreeSize(OSArena* arena);
extern s32 __osGetMemBlockSize(OSArena* arena, void* ptr);
extern void __osDisplayArena(OSArena* arena);
extern int __osCheckArena(OSArena* arena);
extern int __osMalloc_FreeBlockTest_Enable;
#ifdef __cplusplus
}
#endif // !__cplusplus
#endif