@ -67,6 +67,34 @@ static struct driver_info driver_info_pre_reloc = {
. platdata = & test_pdata_manual ,
} ;
void dm_leak_check_start ( struct dm_test_state * dms )
{
dms - > start = mallinfo ( ) ;
if ( ! dms - > start . uordblks )
puts ( " Warning: Please add '#define DEBUG' to the top of common/dlmalloc.c \n " ) ;
}
int dm_leak_check_end ( struct dm_test_state * dms )
{
struct mallinfo end ;
int id ;
/* Don't delete the root class, since we started with that */
for ( id = UCLASS_ROOT + 1 ; id < UCLASS_COUNT ; id + + ) {
struct uclass * uc ;
uc = uclass_find ( id ) ;
if ( ! uc )
continue ;
ut_assertok ( uclass_destroy ( uc ) ) ;
}
end = mallinfo ( ) ;
ut_asserteq ( dms - > start . uordblks , end . uordblks ) ;
return 0 ;
}
/* Test that binding with platdata occurs correctly */
static int dm_test_autobind ( struct dm_test_state * dms )
{
@ -377,14 +405,11 @@ static int dm_test_leak(struct dm_test_state *dms)
int i ;
for ( i = 0 ; i < 2 ; i + + ) {
struct mallinfo start , end ;
struct udevice * dev ;
int ret ;
int id ;
start = mallinfo ( ) ;
if ( ! start . uordblks )
puts ( " Warning: Please add '#define DEBUG' to the top of common/dlmalloc.c \n " ) ;
dm_leak_check_start ( dms ) ;
ut_assertok ( dm_scan_platdata ( false ) ) ;
ut_assertok ( dm_scan_fdt ( gd - > fdt_blob , false ) ) ;
@ -398,18 +423,7 @@ static int dm_test_leak(struct dm_test_state *dms)
ut_assertok ( ret ) ;
}
/* Don't delete the root class, since we started with that */
for ( id = UCLASS_ROOT + 1 ; id < UCLASS_COUNT ; id + + ) {
struct uclass * uc ;
uc = uclass_find ( id ) ;
if ( ! uc )
continue ;
ut_assertok ( uclass_destroy ( uc ) ) ;
}
end = mallinfo ( ) ;
ut_asserteq ( start . uordblks , end . uordblks ) ;
ut_assertok ( dm_leak_check_end ( dms ) ) ;
}
return 0 ;