|
@@ -100,40 +100,41 @@ void * malloc(size_t size) {
|
|
sizeof(freelist_rb_t)) {
|
|
sizeof(freelist_rb_t)) {
|
|
#endif /* FL_RB_ONLY */
|
|
#endif /* FL_RB_ONLY */
|
|
|
|
|
|
- LOCK_GLOBAL();
|
|
|
|
ptr = create_raw_block(size + sizeof(raw_block_header_t),
|
|
ptr = create_raw_block(size + sizeof(raw_block_header_t),
|
|
BIGBLOCK);
|
|
BIGBLOCK);
|
|
if(ptr != NULL) {
|
|
if(ptr != NULL) {
|
|
|
|
|
|
#ifdef WITH_DEBUG
|
|
#ifdef WITH_DEBUG
|
|
|
|
+ LOCK_GLOBAL();
|
|
|
|
+ LOCK_RAW_BLOCK(((raw_block_header_t *)ptr));
|
|
SLIST_INSERT_HEAD(&systemallocator.bb_head,
|
|
SLIST_INSERT_HEAD(&systemallocator.bb_head,
|
|
(raw_block_header_t *) ptr, pointers);
|
|
(raw_block_header_t *) ptr, pointers);
|
|
|
|
+ UNLOCK_RAW_BLOCK(((raw_block_header_t *)ptr));
|
|
|
|
+ UNLOCK_GLOBAL();
|
|
#endif /* WITH_DEBUG */
|
|
#endif /* WITH_DEBUG */
|
|
|
|
|
|
#ifdef WITH_ALLOCATOR_STATS
|
|
#ifdef WITH_ALLOCATOR_STATS
|
|
|
|
+ LOCK_GLOBAL();
|
|
update_stats(&systemallocator.dmm_stats,
|
|
update_stats(&systemallocator.dmm_stats,
|
|
MALLOC,
|
|
MALLOC,
|
|
#ifdef REQUEST_SIZE_INFO
|
|
#ifdef REQUEST_SIZE_INFO
|
|
size,
|
|
size,
|
|
#endif /* REQUEST_SIZE_INFO */
|
|
#endif /* REQUEST_SIZE_INFO */
|
|
((raw_block_header_t *)ptr)->size);
|
|
((raw_block_header_t *)ptr)->size);
|
|
-#endif /* WITH_ALLOCATOR_STATS */
|
|
|
|
-
|
|
|
|
UNLOCK_GLOBAL();
|
|
UNLOCK_GLOBAL();
|
|
|
|
+#endif /* WITH_ALLOCATOR_STATS */
|
|
|
|
|
|
ptr = (void *)((uintptr_t) ptr + sizeof(raw_block_header_t));
|
|
ptr = (void *)((uintptr_t) ptr + sizeof(raw_block_header_t));
|
|
}
|
|
}
|
|
|
|
|
|
- UNLOCK_GLOBAL();
|
|
|
|
-
|
|
|
|
} else {
|
|
} else {
|
|
/* Try to create a new raw block and allocate a memory block from
|
|
/* Try to create a new raw block and allocate a memory block from
|
|
* there */
|
|
* there */
|
|
|
|
|
|
- LOCK_GLOBAL();
|
|
|
|
new_raw_block = create_raw_block((size_t) sys_alloc_size,
|
|
new_raw_block = create_raw_block((size_t) sys_alloc_size,
|
|
DEFAULT_RB_TYPE);
|
|
DEFAULT_RB_TYPE);
|
|
if(new_raw_block != NULL) {
|
|
if(new_raw_block != NULL) {
|
|
|
|
+ LOCK_GLOBAL();
|
|
LOCK_RAW_BLOCK(new_raw_block);
|
|
LOCK_RAW_BLOCK(new_raw_block);
|
|
SLIST_INSERT_HEAD(&systemallocator.rb_head, new_raw_block, pointers);
|
|
SLIST_INSERT_HEAD(&systemallocator.rb_head, new_raw_block, pointers);
|
|
UNLOCK_GLOBAL();
|
|
UNLOCK_GLOBAL();
|