From eb0bb6e38beff1517453502f78c1df994e4bb48c Mon Sep 17 00:00:00 2001 From: Matthew Sotoudeh Date: Thu, 16 May 2024 10:08:06 -0700 Subject: no globals --- buddy.h | 24 ++++++++++++++++-------- 1 file changed, 16 insertions(+), 8 deletions(-) (limited to 'buddy.h') diff --git a/buddy.h b/buddy.h index c1da8eb..0b4de09 100644 --- a/buddy.h +++ b/buddy.h @@ -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); -- cgit v1.2.3