From: Bernd Moessner <berndmoessne...@gmail.com> --- testsuites/libtests/flashdev01/init.c | 9 ++-- .../libtests/flashdev01/test_flashdev.c | 51 +++++++++++++------ .../libtests/flashdev01/test_flashdev.h | 2 +- 3 files changed, 42 insertions(+), 20 deletions(-)
diff --git a/testsuites/libtests/flashdev01/init.c b/testsuites/libtests/flashdev01/init.c index 368968ce10..33cbb8bad8 100644 --- a/testsuites/libtests/flashdev01/init.c +++ b/testsuites/libtests/flashdev01/init.c @@ -62,15 +62,18 @@ static void run_test(void) { uint32_t jedec; int page_count; int type; - size_t min_write_size_in[] = {1,8,16}; + const size_t min_write_size_in[] = {1,8,16}; size_t min_write_size_out = 0; size_t erase_size = 0; const char flash_path[] = "/dev/flashdev0"; + const int page_count_in = 16; + const int page_size_in = 128; + for ( int loop = 0; loop <= 2; loop++) { /* Initalize the flash device driver and flashdev */ - flash = test_flashdev_init(min_write_size_in[loop], ERASE_SIZE); + flash = test_flashdev_init(page_size_in, page_count_in, min_write_size_in[loop], ERASE_SIZE); rtems_test_assert(flash != NULL); /* Register the flashdev as a device */ @@ -185,7 +188,7 @@ static void run_test(void) { } /* Initalize the flash device driver and flashdev */ - flash = test_flashdev_init(min_write_size_in[1], ERASE_SIZE); + flash = test_flashdev_init(page_size_in, page_count_in, min_write_size_in[1], ERASE_SIZE); rtems_test_assert(flash != NULL); /* Register the flashdev as a device */ diff --git a/testsuites/libtests/flashdev01/test_flashdev.c b/testsuites/libtests/flashdev01/test_flashdev.c index df21d432ad..09bd4f0c0c 100644 --- a/testsuites/libtests/flashdev01/test_flashdev.c +++ b/testsuites/libtests/flashdev01/test_flashdev.c @@ -31,11 +31,9 @@ #include <rtems/seterr.h> -#define TEST_DATA_SIZE (PAGE_SIZE * PAGE_COUNT) -#define PAGE_COUNT 16 -#define PAGE_SIZE 128 -#define MAX_NUM_PARTITIONS 16 - +static size_t g_test_data_size = 0; +static size_t g_page_count = 0; +static size_t g_page_size = 0; static size_t g_min_write_size = 0; static size_t g_erase_size = 0; @@ -114,8 +112,8 @@ int test_flashdev_get_page_by_off( size_t *page_size ) { - *page_offset = search_offset - (search_offset%PAGE_SIZE); - *page_size = PAGE_SIZE; + *page_offset = search_offset - (search_offset%g_page_size); + *page_size = g_page_size; return 0; } @@ -127,8 +125,8 @@ int test_flashdev_get_page_by_index( size_t *page_size ) { - *page_offset = search_index * PAGE_SIZE; - *page_size = PAGE_SIZE; + *page_offset = search_index * g_page_size; + *page_size = g_page_size; return 0; } @@ -138,7 +136,7 @@ int test_flashdev_get_page_count( int *page_count ) { - *page_count = PAGE_COUNT; + *page_count = g_page_count; return 0; } @@ -195,7 +193,7 @@ int test_flashdev_read( { test_flashdev* driver = flash->driver; - if (offset + count > TEST_DATA_SIZE) { + if (offset + count > g_test_data_size) { rtems_set_errno_and_return_minus_one( EINVAL ); } @@ -214,7 +212,7 @@ int test_flashdev_write( { test_flashdev* driver = flash->driver; - if (offset + count > TEST_DATA_SIZE) { + if (offset + count > g_test_data_size) { rtems_set_errno_and_return_minus_one( EINVAL ); } @@ -232,11 +230,11 @@ int test_flashdev_erase( { test_flashdev* driver = flash->driver; - if (offset + count > TEST_DATA_SIZE) { + if (offset + count > g_test_data_size) { rtems_set_errno_and_return_minus_one( EINVAL ); } - if (offset%PAGE_SIZE || count%PAGE_SIZE) { + if (offset%g_page_size || count%g_page_size) { rtems_set_errno_and_return_minus_one( EINVAL ); } @@ -245,7 +243,7 @@ int test_flashdev_erase( } /* Initialize Flashdev and underlying driver. */ -rtems_flashdev* test_flashdev_init(size_t min_write_size, size_t erase_size) +rtems_flashdev* test_flashdev_init(size_t page_size, size_t page_count, size_t min_write_size, size_t erase_size) { if (0 == min_write_size) { return NULL; @@ -255,13 +253,34 @@ rtems_flashdev* test_flashdev_init(size_t min_write_size, size_t erase_size) return NULL; } + if (0 == page_size) { + return NULL; + } + + if (0 == page_count) { + return NULL; + } + + if (erase_size % min_write_size) { return NULL; } + if (erase_size % page_size) { + return NULL; + } + + + g_page_count = page_count; + g_page_size = page_size; + g_test_data_size = g_page_count * g_page_size; g_min_write_size = min_write_size; g_erase_size = erase_size; + if (g_test_data_size % g_erase_size) { + return NULL; + } + rtems_flashdev *flash = rtems_flashdev_alloc_and_init(sizeof(rtems_flashdev)); if (flash == NULL) { @@ -275,7 +294,7 @@ rtems_flashdev* test_flashdev_init(size_t min_write_size, size_t erase_size) return NULL; } - flash_driver->data = calloc(1, TEST_DATA_SIZE); + flash_driver->data = calloc(1, g_test_data_size); if (flash_driver->data == NULL) { free(flash_driver); rtems_flashdev_destroy_and_free(flash); diff --git a/testsuites/libtests/flashdev01/test_flashdev.h b/testsuites/libtests/flashdev01/test_flashdev.h index 52cb6befb1..b02a5deed1 100644 --- a/testsuites/libtests/flashdev01/test_flashdev.h +++ b/testsuites/libtests/flashdev01/test_flashdev.h @@ -31,7 +31,7 @@ #include <dev/flash/flashdev.h> -rtems_flashdev* test_flashdev_init(size_t min_write_size, size_t erase_size); +rtems_flashdev* test_flashdev_init(size_t page_size, size_t page_count, size_t min_write_size, size_t erase_size); void test_flashdev_deinit(rtems_flashdev* flash); -- 2.34.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel