diff options
Diffstat (limited to 'inc/malloc_internal.h')
| -rw-r--r-- | inc/malloc_internal.h | 45 |
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 |
