clean: dry create_new_zone

This commit is contained in:
gbrochar 2025-07-31 14:23:29 +02:00
parent 4121fcd7fd
commit 771d7fbce3
2 changed files with 10 additions and 14 deletions

2
main.c
View File

@ -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);

View File

@ -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;
}