SSBM Decomp
Loading...
Searching...
No Matches
objalloc.h
Go to the documentation of this file.
1#ifndef _objalloc_h_
2#define _objalloc_h_
3
4#include <platform.h>
5
6#include "baselib/debug.h"
7
8#include <common_structs.h>
9
10typedef struct _objheap {
11 u32 top;
12 u32 curr;
13 u32 size;
14 u32 remain;
15} objheap;
16
17typedef struct _HSD_ObjAllocLink {
18 struct _HSD_ObjAllocLink* next;
20
21typedef struct _HSD_ObjAllocData {
25 u32 used;
26 u32 free;
27 u32 peak;
31 u32 size;
32 u32 align;
33 struct _HSD_ObjAllocData* next;
35STATIC_ASSERT(sizeof(struct _HSD_ObjAllocData) == 0x2C);
36
37static inline u32 HSD_ObjAllocGetUsing(HSD_ObjAllocData* data)
38{
39 HSD_ASSERT(205, data);
40 return data->used;
41}
42
43static inline u32 HSD_ObjAllocGetFreed(HSD_ObjAllocData* data)
44{
45 HSD_ASSERT(221, data);
46 return data->free;
47}
48
49static inline u32 HSD_ObjAllocGetPeak(HSD_ObjAllocData* data)
50{
51 HSD_ASSERT(237, data);
52 return data->peak;
53}
54
56 u32 num_limit)
57{
58 HSD_ASSERT(251, data);
59 data->num_limit = num_limit;
60}
61
63{
64 HSD_ASSERT(278, data);
65 data->num_limit_flag = 1;
66}
67
69{
70 HSD_ASSERT(291, data);
71 data->num_limit_flag = 0;
72}
73
74void HSD_ObjSetHeap(u32 size, void* ptr);
77void HSD_ObjFree(HSD_ObjAllocData* data, void* obj);
78void _HSD_ObjAllocForgetMemory(void* low, void* high);
79void HSD_ObjAllocInit(HSD_ObjAllocData* data, size_t size, u32 align);
80
81#endif
#define HSD_ASSERT(line, cond)
Definition debug.h:19
signed long s32
Definition hsd_3B2B.h:1
u32 size
Definition lbheap.c:16
s32 HSD_ObjAllocAddFree(HSD_ObjAllocData *data, u32 num)
Definition objalloc.c:21
void HSD_ObjFree(HSD_ObjAllocData *data, void *obj)
Definition objalloc.c:119
static void HSD_ObjAllocSetNumLimit(HSD_ObjAllocData *data, u32 num_limit)
Definition objalloc.h:55
void * HSD_ObjAlloc(HSD_ObjAllocData *data)
Definition objalloc.c:71
void HSD_ObjSetHeap(u32 size, void *ptr)
Definition objalloc.c:13
void HSD_ObjAllocInit(HSD_ObjAllocData *data, size_t size, u32 align)
Definition objalloc.c:140
static void HSD_ObjAllocEnableNumLimit(HSD_ObjAllocData *data)
Definition objalloc.h:62
static u32 HSD_ObjAllocGetUsing(HSD_ObjAllocData *data)
Definition objalloc.h:37
void _HSD_ObjAllocForgetMemory(void *low, void *high)
Definition objalloc.c:158
static u32 HSD_ObjAllocGetPeak(HSD_ObjAllocData *data)
Definition objalloc.h:49
static u32 HSD_ObjAllocGetFreed(HSD_ObjAllocData *data)
Definition objalloc.h:43
static void HSD_ObjAllocDisableNumLimit(HSD_ObjAllocData *data)
Definition objalloc.h:68
#define STATIC_ASSERT(cond)
Definition platform.h:110
void * obj
Definition pobj.c:43
Definition objalloc.h:21
u32 num_limit_flag
Definition objalloc.h:22
u32 heap_limit_size
Definition objalloc.h:29
u32 heap_limit_flag
Definition objalloc.h:23
u32 free
Definition objalloc.h:26
u32 align
Definition objalloc.h:32
u32 num_limit
Definition objalloc.h:28
u32 used
Definition objalloc.h:25
u32 size
Definition objalloc.h:31
HSD_ObjAllocLink * freehead
Definition objalloc.h:24
struct _HSD_ObjAllocData * next
Definition objalloc.h:33
u32 peak
Definition objalloc.h:27
u32 heap_limit_num
Definition objalloc.h:30
Definition objalloc.h:10
u32 top
Definition objalloc.h:11
u32 curr
Definition objalloc.h:12
u32 remain
Definition objalloc.h:14
u32 size
Definition objalloc.h:13