Twilight Princess
Decompilation of The Legend of Zelda: Twilight Princess
Loading...
Searching...
No Matches
heapCommon.h
Go to the documentation of this file.
1#ifndef _REVOLUTION_MEM_HEAPCOMMON_H_
2#define _REVOLUTION_MEM_HEAPCOMMON_H_
3
4#ifdef __cplusplus
5extern "C" {
6#endif
7
9#include <revolution/os.h>
10#include <cstring>
11
13
31
33
34typedef u32 UIntPtr;
35
36static inline UIntPtr GetUIntPtr(const void* ptr) {
37 return (UIntPtr)(ptr);
38}
39
40static inline u32 GetOffsetFromPtr(const void* start, const void* end) {
41 return GetUIntPtr(end) - GetUIntPtr(start);
42}
43
44static inline void* SubU32ToPtr(void* ptr, u32 val) {
45 return (void*)(GetUIntPtr(ptr) - val);
46}
47
48static inline void* AddU32ToPtr(void* ptr, u32 val) {
49 return (void*)(GetUIntPtr(ptr) + val);
50}
51
52static inline void SetOptForHeap(MEMiHeapHead* pHeapHd, u16 optFlag) {
53 pHeapHd->attribute.fields.optFlag = (u8)optFlag;
54}
55
56static inline u16 GetOptForHeap(const MEMiHeapHead* pHeapHd) {
57 return (u16)pHeapHd->attribute.fields.optFlag;
58}
59
60static inline void FillAllocMemory(MEMiHeapHead* pHeapHd, void* address, u32 size) {
61 if (GetOptForHeap(pHeapHd) & 1) {
62 (void)memset(address, 0, size);
63 }
64}
65
66static inline int ComparePtr(const void* a, const void* b) {
67 const u8* wa = (const u8*)a;
68 const u8* wb = (const u8*)b;
69
70 return wa - wb;
71}
72
73
74static inline void LockHeap(MEMiHeapHead* pHeapHd) {
75 if (GetOptForHeap(pHeapHd) & 4) {
76 OSLockMutex(&pHeapHd->mutex);
77 }
78}
79
80static inline void UnlockHeap(MEMiHeapHead* pHeapHd) {
81 if (GetOptForHeap(pHeapHd) & 4) {
82 OSUnlockMutex(&pHeapHd->mutex);
83 }
84}
85
86void MEMiInitHeapHead(MEMiHeapHead* pHeapHd, u32 signature, void* heapStart, void* heapEnd, u16 optFlag);
87
89
91
92#ifdef __cplusplus
93}
94#endif
95
96#endif // _REVOLUTION_MEM_HEAPCOMMON_H_
static void end(b_oh_class *i_this)
Definition d_a_b_oh.cpp:343
void OSUnlockMutex(OSMutex *mutex)
Definition OSMutex.c:86
void OSLockMutex(OSMutex *mutex)
Definition OSMutex.c:58
unsigned int size
Definition __os.h:106
static void LockHeap(MEMiHeapHead *pHeapHd)
Definition heapCommon.h:74
MEMiHeapHead * MEMHeapHandle
Definition heapCommon.h:32
static u16 GetOptForHeap(const MEMiHeapHead *pHeapHd)
Definition heapCommon.h:56
void MEMiFinalizeHeap(MEMiHeapHead *pHeapHd)
void MEMiDumpHeapHead(MEMiHeapHead *pHeapHd)
static void UnlockHeap(MEMiHeapHead *pHeapHd)
Definition heapCommon.h:80
static int ComparePtr(const void *a, const void *b)
Definition heapCommon.h:66
static void * AddU32ToPtr(void *ptr, u32 val)
Definition heapCommon.h:48
static void FillAllocMemory(MEMiHeapHead *pHeapHd, void *address, u32 size)
Definition heapCommon.h:60
u32 UIntPtr
Definition heapCommon.h:34
void MEMiInitHeapHead(MEMiHeapHead *pHeapHd, u32 signature, void *heapStart, void *heapEnd, u16 optFlag)
Definition mem_heapCommon.c:36
static UIntPtr GetUIntPtr(const void *ptr)
Definition heapCommon.h:36
static void SetOptForHeap(MEMiHeapHead *pHeapHd, u16 optFlag)
Definition heapCommon.h:52
static void * SubU32ToPtr(void *ptr, u32 val)
Definition heapCommon.h:44
static u32 GetOffsetFromPtr(const void *start, const void *end)
Definition heapCommon.h:40
unsigned long u32
Definition types.h:12
unsigned short int u16
Definition types.h:10
unsigned char u8
Definition types.h:8
a
Definition k_cos.c:89
@ start
Definition strtold.c:23
Definition list.h:15
Definition heapCommon.h:14
union MEMiHeapHead::@226 attribute
u32 optFlag
Definition heapCommon.h:27
u32 signature
Definition heapCommon.h:15
OSMutex mutex
Definition heapCommon.h:20
MEMList childList
Definition heapCommon.h:17
u32 val
Definition heapCommon.h:23
MEMLink link
Definition heapCommon.h:16
u32 reserved
Definition heapCommon.h:26
struct MEMiHeapHead::@226::@227 fields
void * heapEnd
Definition heapCommon.h:19
void * heapStart
Definition heapCommon.h:18
Definition OSMutex.h:13