[malloc] Tidy up debug output

Colourise debug output and move per-allocation messages to DBGLVL_EXTRA.

Signed-off-by: Michael Brown <mcb30@ipxe.org>
This commit is contained in:
Michael Brown
2014-12-15 14:34:59 +00:00
parent 28149d30f5
commit 998e69ae14

View File

@@ -245,7 +245,8 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
size = ( size + MIN_MEMBLOCK_SIZE - 1 ) & ~( MIN_MEMBLOCK_SIZE - 1 ); size = ( size + MIN_MEMBLOCK_SIZE - 1 ) & ~( MIN_MEMBLOCK_SIZE - 1 );
align_mask = ( align - 1 ) | ( MIN_MEMBLOCK_SIZE - 1 ); align_mask = ( align - 1 ) | ( MIN_MEMBLOCK_SIZE - 1 );
DBG ( "Allocating %#zx (aligned %#zx+%zx)\n", size, align, offset ); DBGC2 ( &heap, "Allocating %#zx (aligned %#zx+%zx)\n",
size, align, offset );
while ( 1 ) { while ( 1 ) {
/* Search through blocks for the first one with enough space */ /* Search through blocks for the first one with enough space */
list_for_each_entry ( block, &free_blocks, list ) { list_for_each_entry ( block, &free_blocks, list ) {
@@ -261,10 +262,10 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
pre = block; pre = block;
block = ( ( ( void * ) pre ) + pre_size ); block = ( ( ( void * ) pre ) + pre_size );
post = ( ( ( void * ) block ) + size ); post = ( ( ( void * ) block ) + size );
DBG ( "[%p,%p) -> [%p,%p) + [%p,%p)\n", pre, DBGC2 ( &heap, "[%p,%p) -> [%p,%p) + [%p,%p)\n",
( ( ( void * ) pre ) + pre->size ), pre, ( ( ( void * ) pre ) + pre->size ),
pre, block, post, pre, block, post,
( ( ( void * ) pre ) + pre->size ) ); ( ( ( void * ) pre ) + pre->size ) );
/* If there is a "post" block, add it in to /* If there is a "post" block, add it in to
* the free list. Leak it if it is too small * the free list. Leak it if it is too small
* (which can happen only at the very end of * (which can happen only at the very end of
@@ -291,8 +292,8 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
/* Update total free memory */ /* Update total free memory */
freemem -= size; freemem -= size;
/* Return allocated block */ /* Return allocated block */
DBG ( "Allocated [%p,%p)\n", block, DBGC2 ( &heap, "Allocated [%p,%p)\n", block,
( ( ( void * ) block ) + size ) ); ( ( ( void * ) block ) + size ) );
ptr = block; ptr = block;
goto done; goto done;
} }
@@ -301,8 +302,8 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
/* Try discarding some cached data to free up memory */ /* Try discarding some cached data to free up memory */
if ( ! discard_cache() ) { if ( ! discard_cache() ) {
/* Nothing available to discard */ /* Nothing available to discard */
DBG ( "Failed to allocate %#zx (aligned %#zx)\n", DBGC ( &heap, "Failed to allocate %#zx (aligned "
size, align ); "%#zx)\n", size, align );
ptr = NULL; ptr = NULL;
goto done; goto done;
} }
@@ -341,7 +342,8 @@ void free_memblock ( void *ptr, size_t size ) {
freeing = ptr; freeing = ptr;
VALGRIND_MAKE_MEM_DEFINED ( freeing, sizeof ( *freeing ) ); VALGRIND_MAKE_MEM_DEFINED ( freeing, sizeof ( *freeing ) );
freeing->size = size; freeing->size = size;
DBG ( "Freeing [%p,%p)\n", freeing, ( ( ( void * ) freeing ) + size )); DBGC2 ( &heap, "Freeing [%p,%p)\n",
freeing, ( ( ( void * ) freeing ) + size ) );
/* Insert/merge into free list */ /* Insert/merge into free list */
list_for_each_entry_safe ( block, tmp, &free_blocks, list ) { list_for_each_entry_safe ( block, tmp, &free_blocks, list ) {
@@ -352,10 +354,11 @@ void free_memblock ( void *ptr, size_t size ) {
( ( ( void * ) freeing ) + freeing->size ) ); ( ( ( void * ) freeing ) + freeing->size ) );
/* Merge with immediately preceding block, if possible */ /* Merge with immediately preceding block, if possible */
if ( gap_before == 0 ) { if ( gap_before == 0 ) {
DBG ( "[%p,%p) + [%p,%p) -> [%p,%p)\n", block, DBGC2 ( &heap, "[%p,%p) + [%p,%p) -> [%p,%p)\n", block,
( ( ( void * ) block ) + block->size ), freeing, ( ( ( void * ) block ) + block->size ), freeing,
( ( ( void * ) freeing ) + freeing->size ),block, ( ( ( void * ) freeing ) + freeing->size ),
( ( ( void * ) freeing ) + freeing->size ) ); block,
( ( ( void * ) freeing ) + freeing->size ) );
block->size += size; block->size += size;
list_del ( &block->list ); list_del ( &block->list );
freeing = block; freeing = block;
@@ -369,13 +372,14 @@ void free_memblock ( void *ptr, size_t size ) {
* possible, merge the following block into the "freeing" * possible, merge the following block into the "freeing"
* block. * block.
*/ */
DBG ( "[%p,%p)\n", freeing, ( ( ( void * ) freeing ) + freeing->size)); DBGC2 ( &heap, "[%p,%p)\n",
freeing, ( ( ( void * ) freeing ) + freeing->size ) );
list_add_tail ( &freeing->list, &block->list ); list_add_tail ( &freeing->list, &block->list );
if ( gap_after == 0 ) { if ( gap_after == 0 ) {
DBG ( "[%p,%p) + [%p,%p) -> [%p,%p)\n", freeing, DBGC2 ( &heap, "[%p,%p) + [%p,%p) -> [%p,%p)\n", freeing,
( ( ( void * ) freeing ) + freeing->size ), block, ( ( ( void * ) freeing ) + freeing->size ), block,
( ( ( void * ) block ) + block->size ), freeing, ( ( ( void * ) block ) + block->size ), freeing,
( ( ( void * ) block ) + block->size ) ); ( ( ( void * ) block ) + block->size ) );
freeing->size += block->size; freeing->size += block->size;
list_del ( &block->list ); list_del ( &block->list );
} }