#include #include #include extern struct Heap_Metadata global_heap; #ifndef __Heap_Metadata #define __Heap_Metadata struct Heap_Metadata { struct Heap_Block* start; size_t size; }; #endif #ifndef __Heap_Block #define __Heap_Block struct Heap_Block { struct Heap_Block* next; size_t size; bool used; void* data; }; #endif void heap_init(); void* malloc(size_t size); void* alloc_page(size_t num_pages, struct Heap_Block** ptr); void free(void *ptr); void free_page(struct Heap_Block *ptr);