summaryrefslogtreecommitdiff
path: root/mm/include/tha.h
blob: 9bf3c857292b228ad6a9cad9227549066a3cca98 (plain)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
#ifndef THA_H
#define THA_H

#include "ultra64.h"
#include "libc/stdint.h"
#include "libc/stddef.h"

typedef struct TwoHeadArena {
    /* 0x0 */ size_t size;
    /* 0x4 */ void* start;
    /* 0x8 */ void* head;
    /* 0xC */ void* tail;
} TwoHeadArena; // size = 0x10

void* THA_GetHead(TwoHeadArena* tha);
void THA_SetHead(TwoHeadArena* tha, void* newHead);
void* THA_GetTail(TwoHeadArena* tha);
void* THA_AllocHead(TwoHeadArena* tha, size_t size);
void* THA_AllocHeadByte(TwoHeadArena* tha);
void* THA_AllocTail(TwoHeadArena* tha, size_t size);
void* THA_AllocTailAlign16(TwoHeadArena* tha, size_t size);
void* THA_AllocTailAlign(TwoHeadArena* tha, size_t size, uintptr_t mask);
ptrdiff_t THA_GetRemaining(TwoHeadArena* tha);
u32 THA_IsCrash(TwoHeadArena* tha);
void THA_Reset(TwoHeadArena* tha);
void THA_Init(TwoHeadArena* tha, void* start, size_t size);
void THA_Destroy(TwoHeadArena* tha);

#endif