diff options
Diffstat (limited to 'src/stem/heap.h')
-rw-r--r-- | src/stem/heap.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/src/stem/heap.h b/src/stem/heap.h new file mode 100644 index 0000000..39ba37e --- /dev/null +++ b/src/stem/heap.h @@ -0,0 +1,27 @@ +#ifndef DEF_HEAP_H +#define DEF_HEAP_H + +#include "types.h" + +struct heap_header { + uint32_t magic; + uint32_t is_hole; + size_t size; +}; + +struct heap_footer { + uint32_t magic; + struct heap_header *header; +}; + +struct heap { + struct heap_header **idx; + uint32_t idxused; + size_t start_addr, end_addr, max_end; +}; + +void heap_create(struct heap *heap, size_t start, size_t idxsize, size_t datasize, size_t maxdatasize); +void* heap_alloc(struct heap *heap, size_t sz); +void heap_free(struct heap *heap, void* ptr); + +#endif |