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