summaryrefslogtreecommitdiff
path: root/buddy.h
diff options
context:
space:
mode:
Diffstat (limited to 'buddy.h')
-rw-r--r--buddy.h24
1 files changed, 16 insertions, 8 deletions
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);
generated by cgit on debian on lair
contact matthew@masot.net with questions or feedback