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

#include "def.h"
#include "paging.h"

void heap_init();

void heap_add(void *ptr, usize size);
void heap_add_region(MemRegion *region);

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

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

heap_header *heap_get_free_ptr();

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

#endif