From 5c10e78974452cde3b9026f77e0bde97b5bff136 Mon Sep 17 00:00:00 2001 From: Georg Hopp Date: Sat, 7 Sep 2013 22:15:28 +0100 Subject: [PATCH] now use at minimum page size for an allocated memory segment, and also store this size. This should use the memory more effective. --- src/utils/memory.c | 13 ++++++------- 1 file changed, 6 insertions(+), 7 deletions(-) diff --git a/src/utils/memory.c b/src/utils/memory.c index 692ce87..ea1cd29 100644 --- a/src/utils/memory.c +++ b/src/utils/memory.c @@ -57,9 +57,6 @@ #include "tree.h" -#define PAGE_SIZE = 32 - - struct memSegment { size_t size; @@ -815,21 +812,23 @@ segmentFree(struct memSegment * segment, int depth) } +/* + * This will always allocate a multiple of PAGESIZE + */ void * memMalloc(size_t size) { struct memSegment * seg; + long psize = sysconf(_SC_PAGESIZE); - //printf("MALLOC of size: %zu\n", size); - //traverse(segments, printElement); + size = (0 >= size)? 1 : (0 != size%psize)? (size/psize)+1 : size/psize; + size *= psize; seg = findElement(segments, size); if (NULL == seg) { seg = newElement(size); - //printf(" CREATE Segment: 0x%p of size: %zu\n", seg, seg->size); } else { - //printf(" FOUND Segment: 0x%p of size: %zu\n", seg, seg->size); // remove the found one from the tree as we use it now. seg = deleteElement(&segments, seg); }