clean: dry create_new_zone
This commit is contained in:
parent
4121fcd7fd
commit
771d7fbce3
2
main.c
2
main.c
|
@ -6,7 +6,7 @@ int main(int argc, char **argv) {
|
|||
int **arr = (int **)malloc(atoi(argv[2]) * sizeof(int *));
|
||||
size_t size;
|
||||
for (int i = 0; i < atoi(argv[2]); i++) {
|
||||
size = (rand() & 0x7ff) | 0xf00000;
|
||||
size = (rand() & 0x7ff) | 0xf000;
|
||||
arr[i] = (int *)malloc(size * sizeof(int));
|
||||
ft_printf ("arr %d addr: %p arr size: %d\n", i, arr[i], size);
|
||||
//free(arr);
|
||||
|
|
22
src/malloc.c
22
src/malloc.c
|
@ -1,9 +1,14 @@
|
|||
#include "malloc.h"
|
||||
|
||||
t_zone *create_new_tiny_zone(void) {
|
||||
t_zone *create_new_zone(size_t size) {
|
||||
t_zone *zone;
|
||||
|
||||
zone = (t_zone *)mmap(NULL, size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
// TODO protect mmap
|
||||
zone = (t_zone *)mmap(NULL, g_zones.tiny_zone_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
// somthing like
|
||||
// if (zone = MAP_FAILED)
|
||||
// return NULL;
|
||||
//
|
||||
zone->head = NULL;
|
||||
zone->next = NULL;
|
||||
return zone;
|
||||
|
@ -59,7 +64,7 @@ void *malloc_tiny(size_t size) {
|
|||
return (void *)((char *)curr + sizeof(t_block));
|
||||
}
|
||||
if (zone->next == NULL) {
|
||||
zone->next = create_new_tiny_zone();
|
||||
zone->next = create_new_zone(g_zones.tiny_zone_size);
|
||||
}
|
||||
zone = zone->next;
|
||||
}
|
||||
|
@ -68,15 +73,6 @@ void *malloc_tiny(size_t size) {
|
|||
return NULL;
|
||||
}
|
||||
|
||||
t_zone *create_new_small_zone(void) {
|
||||
t_zone *zone;
|
||||
// TODO protect mmap
|
||||
zone = (t_zone *)mmap(NULL, g_zones.small_zone_size, PROT_READ | PROT_WRITE, MAP_PRIVATE | MAP_ANONYMOUS, -1, 0);
|
||||
zone->head = NULL;
|
||||
zone->next = NULL;
|
||||
return zone;
|
||||
}
|
||||
|
||||
void *malloc_small(size_t size) {
|
||||
t_zone *zone = g_zones.small_zones;
|
||||
|
||||
|
@ -127,7 +123,7 @@ void *malloc_small(size_t size) {
|
|||
return (void *)((char *)curr + sizeof(t_block));
|
||||
}
|
||||
if (zone->next == NULL) {
|
||||
zone->next = create_new_small_zone();
|
||||
zone->next = create_new_zone(g_zones.small_zone_size);
|
||||
}
|
||||
zone = zone->next;
|
||||
}
|
||||
|
|
Loading…
Reference in New Issue