ft_malloc/src/init.c

30 lines
910 B
C

#include "malloc.h"
pthread_mutex_t g_malloc_mutex;
t_zones g_zones;
void init_tiny_zones(void) {
g_zones.tiny_block_max_size = g_zones.pagesize / 2;
// TODO protect mmap
g_zones.tiny_zones = (t_zone *)mmap(NULL, g_zones.tiny_block_max_size * 128, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
g_zones.tiny_zones->head = NULL;
g_zones.tiny_zones->next = NULL;
}
void init_small_zones(void) {
g_zones.small_block_max_size = g_zones.tiny_block_max_size * 128;
// TODO protect mmap
g_zones.small_zones = (t_zone *)mmap(NULL, g_zones.small_block_max_size * 128, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
g_zones.small_zones->head = NULL;
g_zones.small_zones->next = NULL;
}
__attribute__((constructor))
static void init_malloc(void) {
g_zones.pagesize = (size_t)sysconf(_SC_PAGESIZE);
g_zones.max_align = MAX_ALIGNMENT;
init_tiny_zones();
init_small_zones();
}