|
@@ -36,6 +36,8 @@
|
|
|
#include <stdbool.h>
|
|
|
#include <string.h>
|
|
|
|
|
|
+#include "trace.h"
|
|
|
+
|
|
|
void * malloc(size_t size) {
|
|
|
raw_block_header_t *raw_block, *new_raw_block;
|
|
|
size_t allocation_size;
|
|
@@ -43,6 +45,8 @@ void * malloc(size_t size) {
|
|
|
|
|
|
raw_block = systemallocator.raw_block_head;
|
|
|
ptr = NULL;
|
|
|
+
|
|
|
+ TRACE_1("dmmlib - malloc - request %zu bytes\n", size);
|
|
|
|
|
|
|
|
|
|
|
@@ -67,9 +71,16 @@ void * malloc(size_t size) {
|
|
|
if(allocation_size < SYS_ALLOC_SIZE / 2) {
|
|
|
allocation_size = SYS_ALLOC_SIZE;
|
|
|
} else {
|
|
|
- return (void *)create_new_raw_block(allocation_size, BIGBLOCK);
|
|
|
+ ptr = (void *)create_new_raw_block(allocation_size, BIGBLOCK);
|
|
|
+ if(ptr != NULL) {
|
|
|
+ TRACE_1("dmmlib - malloc - allocated a whole raw block of %zu"
|
|
|
+ " bytes at %p\n", allocation_size, (void *)ptr);
|
|
|
+ ptr = (void *)((char *)ptr + sizeof(raw_block_header_t));
|
|
|
+ }
|
|
|
+ return ptr;
|
|
|
}
|
|
|
|
|
|
+
|
|
|
pthread_mutex_lock(&systemallocator.creation_mutex);
|
|
|
#ifdef FL_RB_ONLY
|
|
|
new_raw_block = create_new_raw_block(allocation_size, FREELIST);
|
|
@@ -112,6 +123,10 @@ void free(void *ptr) {
|
|
|
dmmlib_free(current_raw_block, ptr);
|
|
|
} else {
|
|
|
release_memory(ptr);
|
|
|
+ current_raw_block = (raw_block_header_t *)((char *)ptr -
|
|
|
+ sizeof(raw_block_header_t));
|
|
|
+ TRACE_1("dmmlib - free - free'ing %zu bytes from raw block %p\n",
|
|
|
+ current_raw_block->size, (void *)current_raw_block);
|
|
|
}
|
|
|
}
|
|
|
|