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

#include "def.h"

void heap_init();
void heap_add(void *ptr, usize size);

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