aboutsummaryrefslogtreecommitdiffstats
path: root/inc
diff options
context:
space:
mode:
Diffstat (limited to 'inc')
-rw-r--r--inc/malloc_internal.h45
1 files changed, 45 insertions, 0 deletions
diff --git a/inc/malloc_internal.h b/inc/malloc_internal.h
new file mode 100644
index 0000000..fe275e3
--- /dev/null
+++ b/inc/malloc_internal.h
@@ -0,0 +1,45 @@
+/**
+ * @file malloc_internal.h
+ * @brief Internal data structures and macros for the ft_malloc allocator.
+ */
+
+#ifndef MALLOC_INTERNAL_H
+#define MALLOC_INTERNAL_H
+
+#include <stddef.h>
+
+#define TINY_MAX 128
+#define SMALL_MAX 1024
+#define ALIGNMENT 16
+/* Round x up to the nearest multiple of ALIGNMENT. */
+#define ALIGN(x) (((x) + (ALIGNMENT - 1)) & ~(ALIGNMENT - 1))
+#define MIN_ALLOC_COUNT 100
+
+/* Header embedded before each allocation block inside a zone. */
+typedef struct s_chunk
+{
+ size_t size;
+ struct s_chunk *next;
+ int is_free;
+} t_chunk;
+
+/* Header at the start of each mmap'd region. */
+typedef struct s_zone
+{
+ struct s_zone *next;
+ size_t size;
+} t_zone;
+
+/* Global state: one linked list per zone category. */
+typedef struct s_heap
+{
+ t_zone *tiny;
+ t_zone *small;
+ t_zone *large;
+} t_heap;
+
+extern t_heap g_heap;
+
+t_zone *zone_new (size_t alloc_max);
+
+#endif