|
@@ -67,6 +67,9 @@ void * malloc(size_t size) {
|
|
|
}
|
|
|
|
|
|
if(ptr == NULL) {
|
|
|
+ /* No suitable memory block has been found, a new raw block shall be
|
|
|
+ * created. */
|
|
|
+
|
|
|
size_t sys_alloc_size;
|
|
|
|
|
|
#ifdef WITH_KNOBS
|
|
@@ -94,6 +97,10 @@ void * malloc(size_t size) {
|
|
|
sizeof(freelist_rb_t)) {
|
|
|
#endif /* FL_RB_ONLY */
|
|
|
|
|
|
+ /* The memory request size is too large to serve it inside a raw
|
|
|
+ * block which contains multiple memory blocks, a big raw block
|
|
|
+ * shall be used. */
|
|
|
+
|
|
|
ptr = create_raw_block(size + sizeof(raw_block_header_t),
|
|
|
BIGBLOCK);
|
|
|
if(ptr != NULL) {
|
|
@@ -120,8 +127,7 @@ void * malloc(size_t size) {
|
|
|
/* Try to create a new raw block and allocate a memory block from
|
|
|
* there */
|
|
|
|
|
|
- new_raw_block = create_raw_block((size_t) sys_alloc_size,
|
|
|
- DEFAULT_RB_TYPE);
|
|
|
+ new_raw_block = create_raw_block(sys_alloc_size, DEFAULT_RB_TYPE);
|
|
|
if(new_raw_block != NULL) {
|
|
|
LOCK_GLOBAL();
|
|
|
LOCK_RAW_BLOCK(new_raw_block);
|