summaryrefslogtreecommitdiff
path: root/stage3/heap.h
blob: 15bf0714083f833b580d663145729e8f1034cec1 (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
#ifndef HEAP_H
#define HEAP_H

#include "def.h"

typedef struct __attribute__((packed)) heap_header {
	struct heap_header *next;
	usize size;
} heap_header;

void heap_init();

void heap_add(void *ptr, usize size);
heap_header *heap_get_free_ptr();
usize heap_total_size();

void *try_kmalloc(usize size);
void *kmalloc(usize siz);
void kfree(void *ptr);
void *krealloc(void *ptr, usize size);

#ifdef DEBUG
void heap_check();
#else
#define heap_check()
#endif

#endif