diff options
Diffstat (limited to 'buddy.h')
-rw-r--r-- | buddy.h | 24 |
1 files changed, 16 insertions, 8 deletions
@@ -5,14 +5,22 @@ #define MAGIC_COOKIE_BYTES 32 #define ADDRESS_BITS (8 * sizeof(void*)) -void init_buddy(uint8_t *base, size_t size, - uint8_t magic[MAGIC_COOKIE_BYTES]); +struct buddy { + uint8_t magic[MAGIC_COOKIE_BYTES]; + struct free_block *(avail[ADDRESS_BITS]); + size_t root_logsize; + void *base; +}; -void *allocate(size_t size); -void liberate(void *base, size_t size); +// NOTE: after init_buddy, *state should never move. +void init_buddy(uint8_t *base, size_t size, uint8_t magic[MAGIC_COOKIE_BYTES], + struct buddy *state); -void debug_buddy(void); +void *allocate(size_t size, struct buddy *state); +void liberate(void *base, size_t size, struct buddy *state); -// "advanced features" -void *reallocate(void *old, size_t old_size, size_t new_size); -int reserve(void *start, size_t size); +void debug_buddy(struct buddy *state); + +void *reallocate(void *old, size_t old_size, size_t new_size, + struct buddy *state); +int reserve(void *start, size_t size, struct buddy *state); |