Quellcode durchsuchen

[malloc] Tidy up debug output

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

Signed-off-by: Michael Brown <mcb30@ipxe.org>
tags/v1.20.1
Michael Brown vor 9 Jahren
Ursprung
Commit
998e69ae14
1 geänderte Dateien mit 23 neuen und 19 gelöschten Zeilen
  1. 23
    19
      src/core/malloc.c

+ 23
- 19
src/core/malloc.c Datei anzeigen

@@ -245,7 +245,8 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
245 245
 	size = ( size + MIN_MEMBLOCK_SIZE - 1 ) & ~( MIN_MEMBLOCK_SIZE - 1 );
246 246
 	align_mask = ( align - 1 ) | ( MIN_MEMBLOCK_SIZE - 1 );
247 247
 
248
-	DBG ( "Allocating %#zx (aligned %#zx+%zx)\n", size, align, offset );
248
+	DBGC2 ( &heap, "Allocating %#zx (aligned %#zx+%zx)\n",
249
+		size, align, offset );
249 250
 	while ( 1 ) {
250 251
 		/* Search through blocks for the first one with enough space */
251 252
 		list_for_each_entry ( block, &free_blocks, list ) {
@@ -261,10 +262,10 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
261 262
 				pre   = block;
262 263
 				block = ( ( ( void * ) pre   ) + pre_size );
263 264
 				post  = ( ( ( void * ) block ) + size     );
264
-				DBG ( "[%p,%p) -> [%p,%p) + [%p,%p)\n", pre,
265
-				      ( ( ( void * ) pre ) + pre->size ),
266
-				      pre, block, post,
267
-				      ( ( ( void * ) pre ) + pre->size ) );
265
+				DBGC2 ( &heap, "[%p,%p) -> [%p,%p) + [%p,%p)\n",
266
+					pre, ( ( ( void * ) pre ) + pre->size ),
267
+					pre, block, post,
268
+					( ( ( void * ) pre ) + pre->size ) );
268 269
 				/* If there is a "post" block, add it in to
269 270
 				 * the free list.  Leak it if it is too small
270 271
 				 * (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 ) {
291 292
 				/* Update total free memory */
292 293
 				freemem -= size;
293 294
 				/* Return allocated block */
294
-				DBG ( "Allocated [%p,%p)\n", block,
295
-				      ( ( ( void * ) block ) + size ) );
295
+				DBGC2 ( &heap, "Allocated [%p,%p)\n", block,
296
+					( ( ( void * ) block ) + size ) );
296 297
 				ptr = block;
297 298
 				goto done;
298 299
 			}
@@ -301,8 +302,8 @@ void * alloc_memblock ( size_t size, size_t align, size_t offset ) {
301 302
 		/* Try discarding some cached data to free up memory */
302 303
 		if ( ! discard_cache() ) {
303 304
 			/* Nothing available to discard */
304
-			DBG ( "Failed to allocate %#zx (aligned %#zx)\n",
305
-			      size, align );
305
+			DBGC ( &heap, "Failed to allocate %#zx (aligned "
306
+			       "%#zx)\n", size, align );
306 307
 			ptr = NULL;
307 308
 			goto done;
308 309
 		}
@@ -341,7 +342,8 @@ void free_memblock ( void *ptr, size_t size ) {
341 342
 	freeing = ptr;
342 343
 	VALGRIND_MAKE_MEM_DEFINED ( freeing, sizeof ( *freeing ) );
343 344
 	freeing->size = size;
344
-	DBG ( "Freeing [%p,%p)\n", freeing, ( ( ( void * ) freeing ) + size ));
345
+	DBGC2 ( &heap, "Freeing [%p,%p)\n",
346
+		freeing, ( ( ( void * ) freeing ) + size ) );
345 347
 
346 348
 	/* Insert/merge into free list */
347 349
 	list_for_each_entry_safe ( block, tmp, &free_blocks, list ) {
@@ -352,10 +354,11 @@ void free_memblock ( void *ptr, size_t size ) {
352 354
 			      ( ( ( void * ) freeing ) + freeing->size ) );
353 355
 		/* Merge with immediately preceding block, if possible */
354 356
 		if ( gap_before == 0 ) {
355
-			DBG ( "[%p,%p) + [%p,%p) -> [%p,%p)\n", block,
356
-			      ( ( ( void * ) block ) + block->size ), freeing,
357
-			      ( ( ( void * ) freeing ) + freeing->size ),block,
358
-			      ( ( ( void * ) freeing ) + freeing->size ) );
357
+			DBGC2 ( &heap, "[%p,%p) + [%p,%p) -> [%p,%p)\n", block,
358
+				( ( ( void * ) block ) + block->size ), freeing,
359
+				( ( ( void * ) freeing ) + freeing->size ),
360
+				block,
361
+				( ( ( void * ) freeing ) + freeing->size ) );
359 362
 			block->size += size;
360 363
 			list_del ( &block->list );
361 364
 			freeing = block;
@@ -369,13 +372,14 @@ void free_memblock ( void *ptr, size_t size ) {
369 372
 	 * possible, merge the following block into the "freeing"
370 373
 	 * block.
371 374
 	 */
372
-	DBG ( "[%p,%p)\n", freeing, ( ( ( void * ) freeing ) + freeing->size));
375
+	DBGC2 ( &heap, "[%p,%p)\n",
376
+		freeing, ( ( ( void * ) freeing ) + freeing->size ) );
373 377
 	list_add_tail ( &freeing->list, &block->list );
374 378
 	if ( gap_after == 0 ) {
375
-		DBG ( "[%p,%p) + [%p,%p) -> [%p,%p)\n", freeing,
376
-		      ( ( ( void * ) freeing ) + freeing->size ), block,
377
-		      ( ( ( void * ) block ) + block->size ), freeing,
378
-		      ( ( ( void * ) block ) + block->size ) );
379
+		DBGC2 ( &heap, "[%p,%p) + [%p,%p) -> [%p,%p)\n", freeing,
380
+			( ( ( void * ) freeing ) + freeing->size ), block,
381
+			( ( ( void * ) block ) + block->size ), freeing,
382
+			( ( ( void * ) block ) + block->size ) );
379 383
 		freeing->size += block->size;
380 384
 		list_del ( &block->list );
381 385
 	}

Laden…
Abbrechen
Speichern