#ifndef MALLOC_H # define MALLOC_H # include # include # include # include // TODO Remove me (printf) # include #define MAX_ALIGNMENT 16 typedef struct s_block t_block; typedef struct s_zone t_zone; struct s_block { size_t size; int free; t_block *next; }; struct s_zone { t_block *head; t_zone *next; }; typedef struct s_zones { size_t pagesize; size_t max_align; size_t tiny_block_max_size; size_t small_block_max_size; t_zone *tiny_zones; t_zone *small_zones; t_block *large_blocks; } t_zones; extern pthread_mutex_t g_malloc_mutex; extern t_zones g_zones; void *malloc(size_t size); void free(void *ptr); void *realloc(void *ptr, size_t size); void show_alloc_mem(void); void show_alloc_mem_ex(void); void show_alloc_sizes(void); static void init_malloc(void); void init_tiny_zones(void); void init_small_zones(void); #endif