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;
35
36static inline u32 HSD_ObjAllocGetUsing(HSD_ObjAllocData* data)
37{
38 HSD_ASSERT(205, data);
39 return data->used;
40}
41
42static inline u32 HSD_ObjAllocGetFreed(HSD_ObjAllocData* data)
43{
44 HSD_ASSERT(221, data);
45 return data->free;
46}
47
48static inline u32 HSD_ObjAllocGetPeak(HSD_ObjAllocData* data)
49{
50 HSD_ASSERT(237, data);
51 return data->peak;
52}
53
55 u32 num_limit)
56{
57 HSD_ASSERT(251, data);
58 data->num_limit = num_limit;
59}
60
62{
63 HSD_ASSERT(278, data);
64 data->num_limit_flag = 1;
65}
66
68{
69 HSD_ASSERT(291, data);
70 data->num_limit_flag = 0;
71}
72
73void HSD_ObjSetHeap(u32 size, void* ptr);
74s32 HSD_ObjAllocAddFree(HSD_ObjAllocData* data, u32 num);
76void HSD_ObjFree(HSD_ObjAllocData* data, void* obj);
77void _HSD_ObjAllocForgetMemory(void* low, void* high);
78void HSD_ObjAllocInit(HSD_ObjAllocData* data, size_t size, u32 align);
79
80#endif
#define HSD_ASSERT(line, cond)
Definition debug.h:19
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:54
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:61
static u32 HSD_ObjAllocGetUsing(HSD_ObjAllocData *data)
Definition objalloc.h:36
void _HSD_ObjAllocForgetMemory(void *low, void *high)
Definition objalloc.c:158
static u32 HSD_ObjAllocGetPeak(HSD_ObjAllocData *data)
Definition objalloc.h:48
static u32 HSD_ObjAllocGetFreed(HSD_ObjAllocData *data)
Definition objalloc.h:42
static void HSD_ObjAllocDisableNumLimit(HSD_ObjAllocData *data)
Definition objalloc.h:67
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