diff options
author | Matthew Sotoudeh <matthew@masot.net> | 2024-05-16 10:08:06 -0700 |
---|---|---|
committer | Matthew Sotoudeh <matthew@masot.net> | 2024-05-16 10:08:06 -0700 |
commit | eb0bb6e38beff1517453502f78c1df994e4bb48c (patch) | |
tree | 35c3e1e8333c06a34bb50d8ba9c1f70b03712fda /buddy.h | |
parent | 06612e93bd5c115ae878c198594c4855edabd331 (diff) |
no globals
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); |