2024-08-10 03:49:28 +02:00
|
|
|
#include <stddef.h>
|
|
|
|
#include <stdbool.h>
|
|
|
|
#include <stdint.h>
|
|
|
|
|
2024-08-10 14:37:31 +02:00
|
|
|
extern struct Heap_Metadata global_heap;
|
|
|
|
|
2025-07-02 13:35:14 +02:00
|
|
|
#ifndef __Heap_Metadata
|
|
|
|
#define __Heap_Metadata
|
2024-08-10 03:49:28 +02:00
|
|
|
struct Heap_Metadata {
|
|
|
|
struct Heap_Block* start;
|
|
|
|
size_t size;
|
|
|
|
};
|
2025-07-02 13:35:14 +02:00
|
|
|
#endif
|
2024-08-10 03:49:28 +02:00
|
|
|
|
2025-07-02 13:35:14 +02:00
|
|
|
#ifndef __Heap_Block
|
|
|
|
#define __Heap_Block
|
2024-08-10 03:49:28 +02:00
|
|
|
struct Heap_Block {
|
|
|
|
struct Heap_Block* next;
|
|
|
|
size_t size;
|
|
|
|
bool used;
|
|
|
|
void* data;
|
|
|
|
};
|
2025-07-02 13:35:14 +02:00
|
|
|
#endif
|
2024-08-10 03:49:28 +02:00
|
|
|
|
|
|
|
void heap_init();
|
|
|
|
void* malloc(size_t size);
|
2025-07-01 12:48:05 +02:00
|
|
|
void* alloc_page(size_t num_pages, struct Heap_Block** ptr);
|
2024-08-10 03:49:28 +02:00
|
|
|
void free(void *ptr);
|
2025-07-01 12:48:05 +02:00
|
|
|
void free_page(struct Heap_Block *ptr);
|