diff --git a/pkg/tlsf/patch.txt b/pkg/tlsf/patch.txt
index 2da61aea1c3eb9a9ae9995ab60d14befd674f79b..5a610784dbc8a4d56120bb70493a95765896d61b 100644
--- a/pkg/tlsf/patch.txt
+++ b/pkg/tlsf/patch.txt
@@ -90,7 +90,7 @@ index 0000000..2d8bb4d
 +
 +#endif
 diff --git tlsf.c tlsf.c
-index 3fb5ebd..4225213 100644
+index 3fb5ebd..dce152c 100644
 --- tlsf.c
 +++ tlsf.c
 @@ -25,4 +24,0 @@ enum tlsf_private
@@ -122,84 +122,90 @@ index 3fb5ebd..4225213 100644
 +static const size_t block_size_min =
 @@ -165,0 +153 @@ typedef struct control_t
 +static control_t *control;
-@@ -345 +333 @@ static void mapping_search(size_t size, int* fli, int* sli)
+@@ -168,0 +157,4 @@ typedef ptrdiff_t tlsfptr_t;
++#ifdef DEVELHELP
++void *default_pool;
++#endif
++
+@@ -345 +337 @@ static void mapping_search(size_t size, int* fli, int* sli)
 -static block_header_t* search_suitable_block(control_t* control, int* fli, int* sli)
 +static block_header_t* search_suitable_block(int* fli, int* sli)
-@@ -378 +366 @@ static block_header_t* search_suitable_block(control_t* control, int* fli, int*
+@@ -378 +370 @@ static block_header_t* search_suitable_block(control_t* control, int* fli, int*
 -static void remove_free_block(control_t* control, block_header_t* block, int fl, int sl)
 +static void remove_free_block(block_header_t* block, int fl, int sl)
-@@ -407 +395 @@ static void remove_free_block(control_t* control, block_header_t* block, int fl,
+@@ -407 +399 @@ static void remove_free_block(control_t* control, block_header_t* block, int fl,
 -static void insert_free_block(control_t* control, block_header_t* block, int fl, int sl)
 +static void insert_free_block(block_header_t* block, int fl, int sl)
-@@ -428 +416 @@ static void insert_free_block(control_t* control, block_header_t* block, int fl,
+@@ -428 +420 @@ static void insert_free_block(control_t* control, block_header_t* block, int fl,
 -static void block_remove(control_t* control, block_header_t* block)
 +static void block_remove(block_header_t* block)
-@@ -432 +420 @@ static void block_remove(control_t* control, block_header_t* block)
+@@ -432 +424 @@ static void block_remove(control_t* control, block_header_t* block)
 -	remove_free_block(control, block, fl, sl);
 +	remove_free_block(block, fl, sl);
-@@ -436 +424 @@ static void block_remove(control_t* control, block_header_t* block)
+@@ -436 +428 @@ static void block_remove(control_t* control, block_header_t* block)
 -static void block_insert(control_t* control, block_header_t* block)
 +static void block_insert(block_header_t* block)
-@@ -440 +428 @@ static void block_insert(control_t* control, block_header_t* block)
+@@ -440 +432 @@ static void block_insert(control_t* control, block_header_t* block)
 -	insert_free_block(control, block, fl, sl);
 +	insert_free_block(block, fl, sl);
-@@ -481 +469 @@ static block_header_t* block_absorb(block_header_t* prev, block_header_t* block)
+@@ -481 +473 @@ static block_header_t* block_absorb(block_header_t* prev, block_header_t* block)
 -static block_header_t* block_merge_prev(control_t* control, block_header_t* block)
 +static block_header_t* block_merge_prev(block_header_t* block)
-@@ -488 +476 @@ static block_header_t* block_merge_prev(control_t* control, block_header_t* bloc
+@@ -488 +480 @@ static block_header_t* block_merge_prev(control_t* control, block_header_t* bloc
 -		block_remove(control, prev);
 +		block_remove(prev);
-@@ -496 +484 @@ static block_header_t* block_merge_prev(control_t* control, block_header_t* bloc
+@@ -496 +488 @@ static block_header_t* block_merge_prev(control_t* control, block_header_t* bloc
 -static block_header_t* block_merge_next(control_t* control, block_header_t* block)
 +static block_header_t* block_merge_next(block_header_t* block)
-@@ -504 +492 @@ static block_header_t* block_merge_next(control_t* control, block_header_t* bloc
+@@ -504 +496 @@ static block_header_t* block_merge_next(control_t* control, block_header_t* bloc
 -		block_remove(control, next);
 +		block_remove(next);
-@@ -512 +500 @@ static block_header_t* block_merge_next(control_t* control, block_header_t* bloc
+@@ -512 +504 @@ static block_header_t* block_merge_next(control_t* control, block_header_t* bloc
 -static void block_trim_free(control_t* control, block_header_t* block, size_t size)
 +static void block_trim_free(block_header_t* block, size_t size)
-@@ -520 +508 @@ static void block_trim_free(control_t* control, block_header_t* block, size_t si
+@@ -520 +512 @@ static void block_trim_free(control_t* control, block_header_t* block, size_t si
 -		block_insert(control, remaining_block);
 +		block_insert(remaining_block);
-@@ -525 +513 @@ static void block_trim_free(control_t* control, block_header_t* block, size_t si
+@@ -525 +517 @@ static void block_trim_free(control_t* control, block_header_t* block, size_t si
 -static void block_trim_used(control_t* control, block_header_t* block, size_t size)
 +static void block_trim_used(block_header_t* block, size_t size)
-@@ -534,2 +522,2 @@ static void block_trim_used(control_t* control, block_header_t* block, size_t si
+@@ -534,2 +526,2 @@ static void block_trim_used(control_t* control, block_header_t* block, size_t si
 -		remaining_block = block_merge_next(control, remaining_block);
 -		block_insert(control, remaining_block);
 +		remaining_block = block_merge_next(remaining_block);
 +		block_insert(remaining_block);
-@@ -539 +527 @@ static void block_trim_used(control_t* control, block_header_t* block, size_t si
+@@ -539 +531 @@ static void block_trim_used(control_t* control, block_header_t* block, size_t si
 -static block_header_t* block_trim_free_leading(control_t* control, block_header_t* block, size_t size)
 +static block_header_t* block_trim_free_leading(block_header_t* block, size_t size)
-@@ -549 +537 @@ static block_header_t* block_trim_free_leading(control_t* control, block_header_
+@@ -549 +541 @@ static block_header_t* block_trim_free_leading(control_t* control, block_header_
 -		block_insert(control, block);
 +		block_insert(block);
-@@ -555 +543 @@ static block_header_t* block_trim_free_leading(control_t* control, block_header_
+@@ -555 +547 @@ static block_header_t* block_trim_free_leading(control_t* control, block_header_
 -static block_header_t* block_locate_free(control_t* control, size_t size)
 +static block_header_t* block_locate_free(size_t size)
-@@ -563 +551 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
+@@ -563 +555 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
 -		block = search_suitable_block(control, &fl, &sl);
 +		block = search_suitable_block(&fl, &sl);
-@@ -569 +557 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
+@@ -569 +561 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
 -		remove_free_block(control, block, fl, sl);
 +		remove_free_block(block, fl, sl);
-@@ -575 +563 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
+@@ -575 +567 @@ static block_header_t* block_locate_free(control_t* control, size_t size)
 -static void* block_prepare_used(control_t* control, block_header_t* block, size_t size)
 +static void* block_prepare_used(block_header_t* block, size_t size)
-@@ -580 +568 @@ static void* block_prepare_used(control_t* control, block_header_t* block, size_
+@@ -580 +572 @@ static void* block_prepare_used(control_t* control, block_header_t* block, size_
 -		block_trim_free(control, block, size);
 +		block_trim_free(block, size);
-@@ -588 +576 @@ static void* block_prepare_used(control_t* control, block_header_t* block, size_
+@@ -588 +580 @@ static void* block_prepare_used(control_t* control, block_header_t* block, size_
 -static void control_construct(control_t* control)
 +static void control_construct(void)
-@@ -606,165 +594 @@ static void control_construct(control_t* control)
--/*
--** Debugging utilities.
--*/
--
+@@ -605,0 +598 @@ static void control_construct(control_t* control)
++#ifdef DEVELHELP
+@@ -608,0 +602 @@ static void control_construct(control_t* control)
++typedef void (*tlsf_walker)(void* ptr, size_t size, int used);
+@@ -610 +604 @@ static void control_construct(control_t* control)
 -typedef struct integrity_t
--{
++static void default_walker(void* ptr, size_t size, int used)
+@@ -612,20 +606,2 @@ typedef struct integrity_t
 -	int prev_status;
 -	int status;
 -} integrity_t;
@@ -220,10 +226,12 @@ index 3fb5ebd..4225213 100644
 -
 -	integ->prev_status = this_status;
 -	integ->status += status;
--}
--
++	printf("\tMemory @ %p is %s, size: %u (block: %p)\n", ptr, used ? "used" : "free",
++			(unsigned int)size, (void*) block_from_ptr(ptr));
+@@ -634 +610 @@ static void integrity_walker(void* ptr, size_t size, int used, void* user)
 -int tlsf_check(tlsf_t tlsf)
--{
++void tlsf_walk_pool(void *pool)
+@@ -636,7 +612 @@ int tlsf_check(tlsf_t tlsf)
 -	int i, j;
 -
 -	control_t* control = tlsf_cast(control_t*, tlsf);
@@ -231,7 +239,8 @@ index 3fb5ebd..4225213 100644
 -
 -	/* Check that the free lists and bitmaps are accurate. */
 -	for (i = 0; i < FL_INDEX_COUNT; ++i)
--	{
++	if (!pool)
+@@ -644,37 +614 @@ int tlsf_check(tlsf_t tlsf)
 -		for (j = 0; j < SL_INDEX_COUNT; ++j)
 -		{
 -			const int fl_map = control->fl_bitmap & (1 << i);
@@ -269,7 +278,8 @@ index 3fb5ebd..4225213 100644
 -				block = block->next_free;
 -			}
 -		}
--	}
++		pool = default_pool;
+@@ -682,15 +615,0 @@ int tlsf_check(tlsf_t tlsf)
 -
 -	return status;
 -}
@@ -285,31 +295,16 @@ index 3fb5ebd..4225213 100644
 -void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user)
 -{
 -	tlsf_walker pool_walker = walker ? walker : default_walker;
--	block_header_t* block =
--		offset_to_block(pool, -(int)block_header_overhead);
--
--	while (block && !block_is_last(block))
--	{
+@@ -702 +621 @@ void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user)
 -		pool_walker(
--			block_to_ptr(block),
--			block_size(block),
++		default_walker(
+@@ -705,2 +624 @@ void tlsf_walk_pool(pool_t pool, tlsf_walker walker, void* user)
 -			!block_is_free(block),
 -			user);
--		block = block_next(block);
--	}
--}
--
--size_t tlsf_block_size(void* ptr)
--{
--	size_t size = 0;
--	if (ptr)
--	{
--		const block_header_t* block = block_from_ptr(ptr);
--		size = block_size(block);
--	}
--	return size;
--}
--
++			!block_is_free(block));
+@@ -720,0 +639 @@ size_t tlsf_block_size(void* ptr)
++#endif
+@@ -722,49 +641 @@ size_t tlsf_block_size(void* ptr)
 -int tlsf_check_pool(pool_t pool)
 -{
 -	/* Check that the blocks are physically correct. */
@@ -360,10 +355,10 @@ index 3fb5ebd..4225213 100644
 -
 -pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 +int tlsf_add_pool(void* mem, size_t bytes)
-@@ -775 +599 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
+@@ -775 +646 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 -	const size_t pool_overhead = tlsf_pool_overhead();
 +	const size_t pool_overhead = 2 * block_header_overhead;
-@@ -787,6 +611 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
+@@ -787,6 +658 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 -#if defined (TLSF_64BIT)
 -		printf("tlsf_add_pool: Memory size must be between 0x%x and 0x%x00 bytes.\n", 
 -			(unsigned int)(pool_overhead + block_size_min),
@@ -371,12 +366,12 @@ index 3fb5ebd..4225213 100644
 -#else
 -		printf("tlsf_add_pool: Memory size must be between %u and %u bytes.\n", 
 +		printf("tlsf_add_pool: Memory size must be between %u and %u bytes.\n",
-@@ -795 +613,0 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
+@@ -795 +660,0 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 -#endif
-@@ -808 +626 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
+@@ -808 +673 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 -	block_insert(tlsf_cast(control_t*, tlsf), block);
 +	block_insert(block);
-@@ -816,16 +634 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
+@@ -816,13 +681,3 @@ pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes)
 -	return mem;
 -}
 -
@@ -390,15 +385,18 @@ index 3fb5ebd..4225213 100644
 -	tlsf_assert(block_is_free(block) && "block should be free");
 -	tlsf_assert(!block_is_free(block_next(block)) && "next block should not be free");
 -	tlsf_assert(block_size(block_next(block)) == 0 && "next block size should be zero");
--
++#ifdef DEVELHELP
++    default_pool = mem;
++#endif
+@@ -830,2 +685 @@ void tlsf_remove_pool(tlsf_t tlsf, pool_t pool)
 -	mapping_insert(block_size(block), &fl, &sl);
 -	remove_free_block(control, block, fl, sl);
 +	return 1;
-@@ -838,2 +641 @@ void tlsf_remove_pool(tlsf_t tlsf, pool_t pool)
+@@ -838,2 +692 @@ void tlsf_remove_pool(tlsf_t tlsf, pool_t pool)
 -#if _DEBUG
 -int test_ffs_fls()
 +void tlsf_create(void* mem)
-@@ -841,34 +642,0 @@ int test_ffs_fls()
+@@ -841,34 +693,0 @@ int test_ffs_fls()
 -	/* Verify ffs/fls work properly. */
 -	int rv = 0;
 -	rv += (tlsf_ffs(0) == -1) ? 0 : 0x1;
@@ -433,13 +431,13 @@ index 3fb5ebd..4225213 100644
 -	}
 -#endif
 -
-@@ -879 +647 @@ tlsf_t tlsf_create(void* mem)
+@@ -879 +698 @@ tlsf_t tlsf_create(void* mem)
 -		return 0;
 +		return;
-@@ -882 +650 @@ tlsf_t tlsf_create(void* mem)
+@@ -882 +701 @@ tlsf_t tlsf_create(void* mem)
 -	control_construct(tlsf_cast(control_t*, mem));
-+    control = tlsf_cast(control_t*, mem);
-@@ -884,14 +652 @@ tlsf_t tlsf_create(void* mem)
++	control = tlsf_cast(control_t*, mem);
+@@ -884,14 +703 @@ tlsf_t tlsf_create(void* mem)
 -	return tlsf_cast(tlsf_t, mem);
 -}
 -
@@ -455,74 +453,74 @@ index 3fb5ebd..4225213 100644
 -	/* Nothing to do. */
 -	(void)tlsf;
 +	control_construct();
-@@ -900 +655 @@ void tlsf_destroy(tlsf_t tlsf)
+@@ -900 +706 @@ void tlsf_destroy(tlsf_t tlsf)
 -pool_t tlsf_get_pool(tlsf_t tlsf)
 +void tlsf_create_with_pool(void* mem, size_t bytes)
-@@ -902 +657,2 @@ pool_t tlsf_get_pool(tlsf_t tlsf)
+@@ -902 +708,2 @@ pool_t tlsf_get_pool(tlsf_t tlsf)
 -	return tlsf_cast(pool_t, (char*)tlsf + tlsf_size());
 +	tlsf_create(mem);
 +	tlsf_add_pool((char*)mem + sizeof(control_t), bytes - sizeof(control_t));
-@@ -905 +661 @@ pool_t tlsf_get_pool(tlsf_t tlsf)
+@@ -905 +712 @@ pool_t tlsf_get_pool(tlsf_t tlsf)
 -void* tlsf_malloc(tlsf_t tlsf, size_t size)
 +void* tlsf_malloc(size_t size)
-@@ -907 +662,0 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
+@@ -907 +713,0 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
 -	control_t* control = tlsf_cast(control_t*, tlsf);
-@@ -909,2 +664,2 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
+@@ -909,2 +715,2 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
 -	block_header_t* block = block_locate_free(control, adjust);
 -	return block_prepare_used(control, block, adjust);
 +	block_header_t* block = block_locate_free(adjust);
 +	return block_prepare_used(block, adjust);
-@@ -913 +668 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
+@@ -913 +719 @@ void* tlsf_malloc(tlsf_t tlsf, size_t size)
 -void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 +void* tlsf_memalign(size_t align, size_t size)
-@@ -915 +669,0 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
+@@ -915 +720,0 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 -	control_t* control = tlsf_cast(control_t*, tlsf);
-@@ -932 +686 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
+@@ -932 +737 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 -	block_header_t* block = block_locate_free(control, aligned_size);
 +	block_header_t* block = block_locate_free(aligned_size);
-@@ -960 +714 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
+@@ -960 +765 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 -			block = block_trim_free_leading(control, block, gap);
 +			block = block_trim_free_leading(block, gap);
-@@ -964 +718 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
+@@ -964 +769 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 -	return block_prepare_used(control, block, adjust);
 +	return block_prepare_used(block, adjust);
-@@ -967 +721 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
+@@ -967 +772 @@ void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t size)
 -void tlsf_free(tlsf_t tlsf, void* ptr)
 +void tlsf_free(void* ptr)
-@@ -972 +725,0 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
+@@ -972 +776,0 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
 -		control_t* control = tlsf_cast(control_t*, tlsf);
-@@ -976,3 +729,3 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
+@@ -976,3 +780,3 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
 -		block = block_merge_prev(control, block);
 -		block = block_merge_next(control, block);
 -		block_insert(control, block);
 +		block = block_merge_prev(block);
 +		block = block_merge_next(block);
 +		block_insert(block);
-@@ -995 +748 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
+@@ -995 +799 @@ void tlsf_free(tlsf_t tlsf, void* ptr)
 -void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 +void* tlsf_realloc(void* ptr, size_t size)
-@@ -997 +749,0 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -997 +800,0 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -	control_t* control = tlsf_cast(control_t*, tlsf);
-@@ -1003 +755 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1003 +806 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -		tlsf_free(tlsf, ptr);
 +		tlsf_free(ptr);
-@@ -1008 +760 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1008 +811 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -		p = tlsf_malloc(tlsf, size);
 +		p = tlsf_malloc(size);
-@@ -1027 +779 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1027 +830 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -			p = tlsf_malloc(tlsf, size);
 +			p = tlsf_malloc(size);
-@@ -1032 +784 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1032 +835 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -				tlsf_free(tlsf, ptr);
 +				tlsf_free(ptr);
-@@ -1040 +792 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1040 +843 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -				block_merge_next(control, block);
 +				block_merge_next(block);
-@@ -1045 +797 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
+@@ -1045 +848 @@ void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size)
 -			block_trim_used(control, block, adjust);
 +			block_trim_used(block, adjust);
 diff --git tlsf.h tlsf.h
-index 72496a1..da6a30f 100644
+index 72496a1..6c945e5 100644
 --- tlsf.h
 +++ tlsf.h
 @@ -25,5 +24,0 @@ extern "C" {
@@ -542,7 +540,7 @@ index 72496a1..da6a30f 100644
 -pool_t tlsf_add_pool(tlsf_t tlsf, void* mem, size_t bytes);
 -void tlsf_remove_pool(tlsf_t tlsf, pool_t pool);
 +int tlsf_add_pool(void* mem, size_t bytes);
-@@ -41,22 +33,4 @@ void tlsf_remove_pool(tlsf_t tlsf, pool_t pool);
+@@ -41,7 +33,4 @@ void tlsf_remove_pool(tlsf_t tlsf, pool_t pool);
 -void* tlsf_malloc(tlsf_t tlsf, size_t bytes);
 -void* tlsf_memalign(tlsf_t tlsf, size_t align, size_t bytes);
 -void* tlsf_realloc(tlsf_t tlsf, void* ptr, size_t size);
@@ -550,7 +548,11 @@ index 72496a1..da6a30f 100644
 -
 -/* Returns internal block size, not original request size */
 -size_t tlsf_block_size(void* ptr);
--
++void* tlsf_malloc(size_t bytes);
++void* tlsf_memalign(size_t align, size_t bytes);
++void* tlsf_realloc(void* ptr, size_t size);
++void tlsf_free(void* ptr);
+@@ -49,14 +38,3 @@ size_t tlsf_block_size(void* ptr);
 -/* Overheads/limits of internal structures. */
 -size_t tlsf_size();
 -size_t tlsf_align_size();
@@ -565,7 +567,6 @@ index 72496a1..da6a30f 100644
 -/* Returns nonzero if any internal consistency check fails. */
 -int tlsf_check(tlsf_t tlsf);
 -int tlsf_check_pool(pool_t pool);
-+void* tlsf_malloc(size_t bytes);
-+void* tlsf_memalign(size_t align, size_t bytes);
-+void* tlsf_realloc(void* ptr, size_t size);
-+void tlsf_free(void* ptr);
++#ifdef DEVELHELP
++void tlsf_walk_pool(void *pool);
++#endif
diff --git a/sys/ps/ps.c b/sys/ps/ps.c
index d20ee4f274d17fc19b9649941c356ad3d0bc7974..86cebb109560c321b8ad23586e4d8dd2c3404c3e 100644
--- a/sys/ps/ps.c
+++ b/sys/ps/ps.c
@@ -26,6 +26,10 @@
 #include "xtimer.h"
 #endif
 
+#ifdef MODULE_TLSF
+#include "tlsf.h"
+#endif
+
 /* list of states copied from tcb.h */
 const char *state_names[] = {
     [STATUS_RUNNING] = "running",
@@ -112,5 +116,9 @@ void ps(void)
 #ifdef DEVELHELP
     printf("\t%5s %-21s|%13s%6s %5i (%5i)\n", "|", "SUM", "|", "|",
            overall_stacksz, overall_used);
+#   ifdef MODULE_TLSF
+    puts("\nHeap usage:");
+    tlsf_walk_pool(NULL);
+#   endif
 #endif
 }