Kintsugi OS 0.5.0
x86 Monolithic OS
Loading...
Searching...
No Matches
heap.h
Go to the documentation of this file.
1#ifndef MM_HEAP_H
2#define MM_HEAP_H
3#include "../kklibc/ctypes.h"
4#define HEAP_START 0xc0000000u
5#define HEAP_SIZE 0x04000000u
6#define BLOCK_SIZE 16u
7
15
16typedef struct {
17 u32 heap_start, heap_size, heap_current_end, block_size;
19 u32 total_used, total_free, block_count, alloc_count, free_count, max_used, leak_count;
21} meminfo_t;
22
24void heap_init(void);
25int expand_heap(u32 size);
26void* kmalloc(u32 size);
27void* krealloc(void* ptr, u32 size);
28void kfree(void* ptr);
29void* kmalloc_aligned(u32 size, u32 alignment);
30void kfree_aligned(void* ptr);
32void kmemdump(void);
33void kmemcheck(void* ptr);
34void get_freememaddr(void);
35#endif
unsigned int u32
Definition ctypes.h:11
unsigned char u8
Definition ctypes.h:15
void kfree(void *ptr)
Definition heap.c:159
void * krealloc(void *ptr, u32 size)
Definition heap.c:174
void get_freememaddr(void)
Definition heap.c:300
int expand_heap(u32 size)
Definition heap.c:67
meminfo_t get_meminfo(void)
Definition heap.c:247
u32 heap_current_end
Definition heap.c:7
void heap_init(void)
Definition heap.c:111
void kmemcheck(void *ptr)
Definition heap.c:295
void kfree_aligned(void *ptr)
Definition heap.c:232
void * kmalloc(u32 size)
Definition heap.c:128
void kmemdump(void)
Definition heap.c:274
struct mem_block mem_block_t
void * kmalloc_aligned(u32 size, u32 alignment)
Definition heap.c:218
Definition heap.h:8
u32 magic
Definition heap.h:11
u8 is_free
Definition heap.h:12
u8 padding[3]
Definition heap.h:13
struct mem_block * next
Definition heap.h:10
u32 size
Definition heap.h:9
Definition heap.h:16
u32 largest_free
Definition heap.h:20
u32 block_size
Definition heap.h:17
u32 alloc_count
Definition heap.h:19
mem_block_t * free_blocks
Definition heap.h:18