mirror of
https://gitlab.rtems.org/rtems/rtos/rtems.git
synced 2026-10-06 10:59:48 +08:00
committed by
Joel Sherrill
parent
e3dc884685
commit
7d60e5681f
@@ -33,6 +33,8 @@ directives:
|
||||
+ rtems_tarfs_load
|
||||
+ rtems_fdt_load_blob_file_binary
|
||||
+ rtems_fdt_unload
|
||||
* rtems_fdt_num_mem_rsv
|
||||
* rtems_fdt_get_mem_rsv
|
||||
|
||||
concepts:
|
||||
|
||||
|
||||
@@ -50,14 +50,59 @@
|
||||
|
||||
const char rtems_test_name[] = "FDT 02";
|
||||
|
||||
void test_mem_rsv(
|
||||
rtems_fdt_handle *handle,
|
||||
int count,
|
||||
int n,
|
||||
uint64_t exp_address,
|
||||
uint64_t exp_size
|
||||
);
|
||||
|
||||
rtems_task Init( rtems_task_argument argument );
|
||||
|
||||
void test_mem_rsv(
|
||||
rtems_fdt_handle *handle,
|
||||
int count,
|
||||
int n,
|
||||
uint64_t exp_address,
|
||||
uint64_t exp_size
|
||||
)
|
||||
{
|
||||
int rc, num;
|
||||
uint64_t address, size;
|
||||
|
||||
num = rtems_fdt_num_mem_rsv( handle );
|
||||
rtems_test_assert( num == count );
|
||||
|
||||
rc = rtems_fdt_get_mem_rsv( handle, n, &address, &size );
|
||||
|
||||
if ( n < 0 ) {
|
||||
rtems_test_assert( rc < 0 );
|
||||
} else if ( n == num ) {
|
||||
rtems_test_assert( rc == 0 );
|
||||
rtems_test_assert( size == 0 );
|
||||
} else {
|
||||
rtems_test_assert( rc == 0 );
|
||||
rtems_test_assert( exp_address == address );
|
||||
rtems_test_assert( exp_size == size );
|
||||
}
|
||||
}
|
||||
|
||||
#define NUM_MEM_RSV ( 3 )
|
||||
|
||||
rtems_task Init( rtems_task_argument ignored )
|
||||
{
|
||||
(void) ignored;
|
||||
rtems_status_code sc;
|
||||
rtems_fdt_handle handle;
|
||||
int rc;
|
||||
int i;
|
||||
int num_mem_rsv = NUM_MEM_RSV;
|
||||
|
||||
uint64_t addresses[] =
|
||||
{ 0x1000000000000000, 0x2000000000000000, 0x0000000000000000 };
|
||||
uint64_t sizes[] =
|
||||
{ 0x0000000002000000, 0x0100000000000000, 0x0000000000000014 };
|
||||
|
||||
TEST_BEGIN();
|
||||
|
||||
@@ -67,6 +112,13 @@ rtems_task Init( rtems_task_argument ignored )
|
||||
rc = rtems_fdt_load_blob_file_binary( "/test01.dtb", &handle );
|
||||
rtems_test_assert( rc == 0 );
|
||||
|
||||
test_mem_rsv( &handle, num_mem_rsv, -1, 0, 0 );
|
||||
test_mem_rsv( &handle, num_mem_rsv, num_mem_rsv, 0, 0 );
|
||||
|
||||
for ( i = 0; i < num_mem_rsv; i++ ) {
|
||||
test_mem_rsv( &handle, num_mem_rsv, i, addresses[ i ], sizes[ i ] );
|
||||
}
|
||||
|
||||
rc = rtems_fdt_unload( &handle );
|
||||
rtems_test_assert( rc == 0 );
|
||||
|
||||
|
||||
Reference in New Issue
Block a user