54 lines
910 B
C
54 lines
910 B
C
#ifndef MALLOC_H
|
|
# define MALLOC_H
|
|
|
|
# include <stdlib.h>
|
|
# include <unistd.h>
|
|
# include <sys/mman.h>
|
|
# include <pthread.h>
|
|
|
|
// TODO Remove me (printf)
|
|
# include <stdio.h>
|
|
|
|
#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
|