From: Bernd Moessner <berndmoessne...@gmail.com> --- cpukit/dev/flash/flashdev.c | 71 ++++-- cpukit/include/dev/flash/flashdev.h | 22 +- cpukit/libmisc/shell/main_flashdev.c | 26 +-- testsuites/libtests/flashdev01/init.c | 204 ++++++++++++------ .../libtests/flashdev01/test_flashdev.c | 54 +++-- .../libtests/flashdev01/test_flashdev.h | 4 +- 6 files changed, 264 insertions(+), 117 deletions(-)
diff --git a/cpukit/dev/flash/flashdev.c b/cpukit/dev/flash/flashdev.c index 0020e8d2c1..f50d2235a1 100644 --- a/cpukit/dev/flash/flashdev.c +++ b/cpukit/dev/flash/flashdev.c @@ -124,7 +124,7 @@ static int rtems_flashdev_ioctl_get_page_count( void *arg ); -static int rtems_flashdev_ioctl_get_write_block_size( +static int rtems_flashdev_ioctl_get_min_write_size( rtems_flashdev *flash, void *arg ); @@ -146,8 +146,7 @@ static int rtems_flashdev_get_abs_addr( static int rtems_flashdev_update_and_return( rtems_libio_t *iop, int status, - size_t count, - off_t new_offset + size_t count ); static uint32_t rtems_flashdev_find_unallocated_region( @@ -225,13 +224,20 @@ static const rtems_filesystem_file_handlers_r rtems_flashdev_handler = { .poll_h = rtems_filesystem_default_poll, .readv_h = rtems_filesystem_default_readv, .writev_h = rtems_filesystem_default_writev }; - +/* static const IMFS_node_control rtems_flashdev_node_control = IMFS_GENERIC_INITIALIZER( &rtems_flashdev_handler, IMFS_node_initialize_generic, rtems_flashdev_node_destroy ); +*/ +static const IMFS_node_control rtems_flashdev_node_control = { + .handlers = &rtems_flashdev_handler, + .node_initialize = IMFS_node_initialize_generic, + .node_remove = IMFS_node_remove_default, + .node_destroy = rtems_flashdev_node_destroy +}; static void rtems_flashdev_node_destroy( IMFS_jnode_t *node @@ -321,7 +327,7 @@ static int rtems_flashdev_read_write( int status; if ( read_buff == NULL && write_buff == NULL ) { - return 0; + return EINVAL; } /* Get flash address */ @@ -335,12 +341,35 @@ static int rtems_flashdev_read_write( if ( read_buff != NULL ) { status = ( *flash->read )( flash, addr, count, read_buff ); } else if ( write_buff != NULL ) { + size_t min_write_size = 0; + status = (flash)->get_min_write_size(flash, &min_write_size); + + if ( status < 0 ) { + return status; + } + + if (0 == min_write_size ) + { + rtems_set_errno_and_return_minus_one( EIO ); + } + else + { + if (count % min_write_size) + { + rtems_set_errno_and_return_minus_one( EINVAL ); + } + if (addr % min_write_size) + { + rtems_set_errno_and_return_minus_one( EFAULT ); + } + } + status = ( *flash->write )( flash, addr, count, write_buff ); } rtems_flashdev_release( flash ); /* Update offset and return */ - return rtems_flashdev_update_and_return( iop, status, count, addr + count ); + return rtems_flashdev_update_and_return( iop, status, count ); } static int rtems_flashdev_ioctl( @@ -388,8 +417,8 @@ static int rtems_flashdev_ioctl( case RTEMS_FLASHDEV_IOCTL_GET_PAGE_COUNT: err = rtems_flashdev_ioctl_get_page_count( flash, arg ); break; - case RTEMS_FLASHDEV_IOCTL_GET_WRITE_BLOCK_SIZE: - err = rtems_flashdev_ioctl_get_write_block_size( flash, arg ); + case RTEMS_FLASHDEV_IOCTL_GET_MIN_WRITE_SIZE: + err = rtems_flashdev_ioctl_get_min_write_size( flash, arg ); break; default: err = EINVAL; @@ -486,6 +515,18 @@ int rtems_flashdev_register( return rv; } +int rtems_flashdev_deregister( + const char *flash_path +) +{ + rtems_filesystem_eval_path_context_t ctx; + int eval_flags = RTEMS_FS_FOLLOW_LINK; + const rtems_filesystem_location_info_t *currentloc = + rtems_filesystem_eval_path_start( &ctx , flash_path, eval_flags ); + + return IMFS_rmnod(NULL, currentloc); +} + static int rtems_flashdev_do_init( rtems_flashdev *flash, void ( *destroy )( rtems_flashdev *flash ) @@ -503,7 +544,7 @@ static int rtems_flashdev_do_init( flash->get_page_info_by_offset = NULL; flash->get_page_info_by_index = NULL; flash->get_page_count = NULL; - flash->get_write_block_size = NULL; + flash->get_min_write_size = NULL; flash->region_table = NULL; return 0; } @@ -520,7 +561,6 @@ void rtems_flashdev_destroy_and_free( rtems_flashdev *flash ) } rtems_recursive_mutex_destroy( &( flash->mutex ) ); free( flash ); - flash = NULL; return; } @@ -602,13 +642,12 @@ static int rtems_flashdev_get_abs_addr( static int rtems_flashdev_update_and_return( rtems_libio_t *iop, int status, - size_t count, - off_t new_offset + size_t count ) { /* Update offset and return */ if ( status == 0 ) { - iop->offset = new_offset; + iop->offset += count; return count; } else { rtems_set_errno_and_return_minus_one( status ); @@ -847,7 +886,7 @@ static int rtems_flashdev_ioctl_get_page_count( rtems_flashdev *flash, void *arg } } -static int rtems_flashdev_ioctl_get_write_block_size( +static int rtems_flashdev_ioctl_get_min_write_size( rtems_flashdev *flash, void *arg ) @@ -855,10 +894,10 @@ static int rtems_flashdev_ioctl_get_write_block_size( if ( arg == NULL ) { rtems_set_errno_and_return_minus_one( EINVAL ); } - if ( flash->get_write_block_size == NULL ) { + if ( flash->get_min_write_size == NULL ) { return 0; } else { - return ( *flash->get_write_block_size )( flash, ( (size_t *) arg ) ); + return ( *flash->get_min_write_size )( flash, ( (size_t *) arg ) ); } } diff --git a/cpukit/include/dev/flash/flashdev.h b/cpukit/include/dev/flash/flashdev.h index 6244d38e3a..f6973df2a3 100644 --- a/cpukit/include/dev/flash/flashdev.h +++ b/cpukit/include/dev/flash/flashdev.h @@ -142,7 +142,7 @@ typedef struct rtems_flashdev rtems_flashdev; * * @param[out] count Integer containing the minimum write size. */ -#define RTEMS_FLASHDEV_IOCTL_GET_WRITE_BLOCK_SIZE 10 +#define RTEMS_FLASHDEV_IOCTL_GET_MIN_WRITE_SIZE 10 /** * @brief The maximum number of region limited file descriptors @@ -354,14 +354,14 @@ struct rtems_flashdev { * @brief Call to device driver to return the minimum write size of the * flash device. * - * @param[out] write_block_size The minimum write size of the flash device. + * @param[out] min_write_size The minimum write size of the flash device. * * @retval 0 Success. * @retval non-zero Failed. */ - int ( *get_write_block_size )( + int ( *get_min_write_size )( rtems_flashdev *flashdev, - size_t *write_block_size + size_t *min_write_size ); /** @@ -441,6 +441,20 @@ int rtems_flashdev_register( const char *flash_path ); +/** + * @brief Deregister the flash device. + * + * This function removes the node allocated for the flash device. + * + * @param[in] flash_path The path to the flash device file. + * + * @retval 0 Successful operation. + * @retval non-zero Failed operation. + */ +int rtems_flashdev_deregister( + const char *flash_path +); + /** * @brief Destroys the flash device. * diff --git a/cpukit/libmisc/shell/main_flashdev.c b/cpukit/libmisc/shell/main_flashdev.c index 516c77ae27..5851adfeef 100644 --- a/cpukit/libmisc/shell/main_flashdev.c +++ b/cpukit/libmisc/shell/main_flashdev.c @@ -40,7 +40,7 @@ static int flashdev_shell_get_jedec_id(char *dev_path); static int flashdev_shell_get_page_by_off(char *dev_path, int argc, char *argv[]); static int flashdev_shell_get_page_by_idx(char *dev_path, int argc, char *argv[]); static int flashdev_shell_get_pg_count(char *dev_path); -static int flashdev_shell_get_wb_size(char *dev_path); +static int flashdev_shell_get_min_write_size(char *dev_path); static int flashdev_shell_ioctl_value( char *dev_path, @@ -67,7 +67,7 @@ static const char rtems_flashdev_shell_usage [] = " -o <address> Print the page information of page at address\n" " -i <index> Print the page information of page at index\n" " -p Print the number of pages\n" - " -b Print the write block size\n" + " -b Print the min. write size\n" " -h Print this help\n"; @@ -98,23 +98,23 @@ static int rtems_flashdev_shell_main( int argc, char *argv[] ) { /* Erase */ return flashdev_shell_erase(dev_path, argc, &argv[i]); case ('t'): - /* Flash Type */ + /* Get flash Type */ return flashdev_shell_get_type(dev_path); case ('d'): - /* JEDEC Id */ + /* Get JEDEC Id */ return flashdev_shell_get_jedec_id(dev_path); case ('o'): - /* Page info by offset */ + /* Get page info by offset */ return flashdev_shell_get_page_by_off(dev_path, argc, &argv[i]); case ('i'): - /* Page info by index */ + /* Get page info by index */ return flashdev_shell_get_page_by_idx(dev_path, argc, &argv[i]); case ('p'): - /* Page count */ + /* Get page count */ return flashdev_shell_get_pg_count(dev_path); case ('b'): - /* Write block size */ - return flashdev_shell_get_wb_size(dev_path); + /* Get min write size */ + return flashdev_shell_get_min_write_size(dev_path); case ('h'): default: /* Help */ @@ -480,7 +480,7 @@ static int flashdev_shell_get_pg_count( char *dev_path ) return 0; } -static int flashdev_shell_get_wb_size( char *dev_path ) +static int flashdev_shell_get_min_write_size( char *dev_path ) { size_t ret; int status; @@ -488,16 +488,16 @@ static int flashdev_shell_get_wb_size( char *dev_path ) /* Get Write Block Size */ status = flashdev_shell_ioctl_value( dev_path, - RTEMS_FLASHDEV_IOCTL_GET_WRITE_BLOCK_SIZE, + RTEMS_FLASHDEV_IOCTL_GET_MIN_WRITE_SIZE, &ret ); /* Print Write Block Size */ if (status) { - printf("Failed to get write block size\n"); + printf("Failed to get min write size\n"); return status; } else { - printf("Write block size: 0x%zx\n", ret); + printf("Min. Write size: 0x%zx\n", ret); } return 0; } diff --git a/testsuites/libtests/flashdev01/init.c b/testsuites/libtests/flashdev01/init.c index 30af3f33c1..dc174daa62 100644 --- a/testsuites/libtests/flashdev01/init.c +++ b/testsuites/libtests/flashdev01/init.c @@ -34,14 +34,15 @@ #include <fcntl.h> #include <sys/ioctl.h> -#define TEST_NAME_LENGTH 10 + #define TEST_DATA_SIZE (PAGE_SIZE * PAGE_COUNT) #define PAGE_COUNT 16 #define PAGE_SIZE 128 -#define WB_SIZE 1 +#define MIN_WRITE_SIZE 1 const char rtems_test_name[] = "FLASHDEV 1"; +const char test_string[] = "My test string!"; static void run_test(void); @@ -53,89 +54,134 @@ static void run_test(void) { rtems_flashdev* flash; int status; char* read_data; + size_t bytes_read; rtems_flashdev_region e_args; rtems_flashdev_ioctl_page_info pg_info; rtems_flashdev_region region; uint32_t jedec; int page_count; int type; - size_t wb_size; + size_t min_write_size_in[] = {1,8,16}; + size_t min_write_size_out; + const char flash_path[] = "/dev/flashdev0"; + + for ( int loop = 0; loop <= 2; loop++) + { + /* Initalize the flash device driver and flashdev */ + flash = test_flashdev_init(min_write_size_in[loop]); + rtems_test_assert(flash != NULL); + + /* Register the flashdev as a device */ + status = rtems_flashdev_register(flash, flash_path); + rtems_test_assert(!status); + + /* Open the flashdev */ + file = fopen(flash_path, "r+"); + rtems_test_assert(file != NULL); + + /* Adjust the file buffering */ + status = setvbuf(file, NULL, _IOFBF, min_write_size_in[loop]); + rtems_test_assert(!status); + + fd = fileno(file); + + /* Read data from flash */ + read_data = fgets(buff, TEST_DATA_SIZE, file); + rtems_test_assert(read_data != NULL); + + /* Fseek to start of flash and read again */ + status = fseek(file, 0x0, SEEK_SET); + rtems_test_assert(!status); + bytes_read = fread(buff, 1, TEST_DATA_SIZE, file); + rtems_test_assert(bytes_read == TEST_DATA_SIZE); + + /* Fseek to start of flash */ + status = fseek(file, 0x0, SEEK_SET); + rtems_test_assert(!status); + + /* Write the test name to the flash */ + status = fwrite(test_string, 1, sizeof(test_string), file); + rtems_test_assert(status == sizeof(test_string)); + + /* Fseek to start of flash and read again */ + status = fseek(file, 0x0, SEEK_SET); + rtems_test_assert(!status); + fgets(buff, TEST_DATA_SIZE, file); + rtems_test_assert(!strncmp(buff, test_string, sizeof(test_string))); + + /* Test Erasing */ + e_args.offset = 0x0; + e_args.size = PAGE_SIZE; + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_ERASE, &e_args); + rtems_test_assert(!status); + + fseek(file, 0x0, SEEK_SET); + fgets(buff, TEST_DATA_SIZE, file); + rtems_test_assert(buff[0] == 0); + + /* Test getting JEDEC ID */ + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_JEDEC_ID, &jedec); + rtems_test_assert(!status); + rtems_test_assert(jedec == 0x00ABCDEF); + + /* Test getting flash type */ + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_TYPE, &type); + rtems_test_assert(!status); + rtems_test_assert(type == RTEMS_FLASHDEV_NOR); + + /* Test getting page info from offset */ + pg_info.location = PAGE_SIZE + PAGE_SIZE/2; + + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGEINFO_BY_OFFSET, &pg_info); + rtems_test_assert(!status); + rtems_test_assert(pg_info.page_info.offset == PAGE_SIZE); + rtems_test_assert(pg_info.page_info.size == PAGE_SIZE); + + /* Test getting page info from index */ + pg_info.location = 2; + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGEINFO_BY_INDEX, &pg_info); + rtems_test_assert(!status); + rtems_test_assert(pg_info.page_info.offset == 2*PAGE_SIZE); + rtems_test_assert(pg_info.page_info.size == PAGE_SIZE); + + /* Test getting page count */ + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGE_COUNT, &page_count); + rtems_test_assert(!status); + rtems_test_assert(page_count == PAGE_COUNT); + + /* Test getting min write size */ + status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_MIN_WRITE_SIZE, &min_write_size_out); + rtems_test_assert(!status); + rtems_test_assert(0 == memcmp(&min_write_size_out, &min_write_size_in[loop] , sizeof(size_t))); + + /* Close the file handle */ + status = fclose(file); + rtems_test_assert(!status); + + /* Deregister path */ + status = rtems_flashdev_deregister(flash_path); + rtems_test_assert(!status); + + test_flashdev_deinit(flash); + } /* Initalize the flash device driver and flashdev */ - flash = test_flashdev_init(); + flash = test_flashdev_init(min_write_size_in[1]); rtems_test_assert(flash != NULL); /* Register the flashdev as a device */ - status = rtems_flashdev_register(flash, "dev/flashdev0"); + status = rtems_flashdev_register(flash, flash_path); rtems_test_assert(!status); /* Open the flashdev */ - file = fopen("dev/flashdev0", "r+"); + file = fopen(flash_path, "r+"); rtems_test_assert(file != NULL); - fd = fileno(file); - - /* Read data from flash */ - read_data = fgets(buff, TEST_DATA_SIZE, file); - rtems_test_assert(read_data != NULL); - - /* Fseek to start of flash */ - status = fseek(file, 0x0, SEEK_SET); - rtems_test_assert(!status); - - /* Write the test name to the flash */ - status = fwrite(rtems_test_name, TEST_NAME_LENGTH, 1, file); - rtems_test_assert(status == 1); - - /* Fseek to start of flash and read again */ - status = fseek(file, 0x0, SEEK_SET); - rtems_test_assert(!status); - fgets(buff, TEST_DATA_SIZE, file); - rtems_test_assert(!strncmp(buff, rtems_test_name, TEST_NAME_LENGTH)); - /* Test Erasing */ - e_args.offset = 0x0; - e_args.size = PAGE_SIZE; - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_ERASE, &e_args); + /* Adjust the file buffering */ + status = setvbuf(file, NULL, _IOFBF, min_write_size_in[1]); rtems_test_assert(!status); - fseek(file, 0x0, SEEK_SET); - fgets(buff, TEST_DATA_SIZE, file); - rtems_test_assert(buff[0] == 0); - - /* Test getting JEDEC ID */ - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_JEDEC_ID, &jedec); - rtems_test_assert(!status); - rtems_test_assert(jedec == 0x00ABCDEF); - - /* Test getting flash type */ - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_TYPE, &type); - rtems_test_assert(!status); - rtems_test_assert(type == RTEMS_FLASHDEV_NOR); - - /* Test getting page info from offset */ - pg_info.location = PAGE_SIZE + PAGE_SIZE/2; - - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGEINFO_BY_OFFSET, &pg_info); - rtems_test_assert(!status); - rtems_test_assert(pg_info.page_info.offset == PAGE_SIZE); - rtems_test_assert(pg_info.page_info.size == PAGE_SIZE); - - /* Test getting page info from index */ - pg_info.location = 2; - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGEINFO_BY_INDEX, &pg_info); - rtems_test_assert(!status); - rtems_test_assert(pg_info.page_info.offset == 2*PAGE_SIZE); - rtems_test_assert(pg_info.page_info.size == PAGE_SIZE); - - /* Test getting page count */ - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_PAGE_COUNT, &page_count); - rtems_test_assert(!status); - rtems_test_assert(page_count == PAGE_COUNT); - - /* Test getting write block size */ - status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_GET_WRITE_BLOCK_SIZE, &wb_size); - rtems_test_assert(!status); - rtems_test_assert(wb_size == WB_SIZE); + fd = fileno(file); /* Test Regions */ region.offset = 0x400; @@ -143,10 +189,16 @@ static void run_test(void) { status = ioctl(fd, RTEMS_FLASHDEV_IOCTL_SET_REGION, ®ion); rtems_test_assert(!status); + /* Test read within then region */ + status = fseek(file, 0x0, SEEK_SET); + rtems_test_assert(!status); + bytes_read = fread(buff, 1, 0x200, file); + rtems_test_assert(bytes_read == 0x200); + /* Test read to larger then region */ fseek(file, 0x0, SEEK_SET); read_data = fgets(buff, 2048, file); - rtems_test_assert(read_data == NULL); + rtems_test_assert(buff[0] == 0); /* Test fseek outside of region */ status = fseek(file, 0x201, SEEK_SET); @@ -154,11 +206,21 @@ static void run_test(void) { /* Write to base unset region and check the writes location */ fseek(file, 0x0, SEEK_SET); - fwrite("HELLO WORLD", 11, 1, file); + fwrite("HELLO WORLD!!!!!", 1, 16, file); ioctl(fd, RTEMS_FLASHDEV_IOCTL_UNSET_REGION, NULL); fseek(file, 0x400, SEEK_SET); - fgets(buff, 11, file); - rtems_test_assert(strncmp(buff, "HELLO WORLD", 11)); + fgets(buff, 16, file); + rtems_test_assert(strncmp(buff, "HELLO WORLD!!!!!", 16)); + + /* Close the file handle */ + status = fclose(file); + rtems_test_assert(!status); + + /* Deregister path */ + status = rtems_flashdev_deregister(flash_path); + rtems_test_assert(!status); + + test_flashdev_deinit(flash); } static void Init(rtems_task_argument arg) diff --git a/testsuites/libtests/flashdev01/test_flashdev.c b/testsuites/libtests/flashdev01/test_flashdev.c index d97f5d8145..0022210668 100644 --- a/testsuites/libtests/flashdev01/test_flashdev.c +++ b/testsuites/libtests/flashdev01/test_flashdev.c @@ -33,11 +33,12 @@ #define TEST_DATA_SIZE (PAGE_SIZE * PAGE_COUNT) #define PAGE_COUNT 16 #define PAGE_SIZE 128 -#define WB_SIZE 1 #define MAX_NUM_REGIONS 48 #define BITALLOC_SIZE 32 #define NUM_BITALLOC ((MAX_NUM_REGIONS + BITALLOC_SIZE - 1) / BITALLOC_SIZE) +static size_t g_min_write_size = 0; + /** * This flash device driver is for testing flashdev * API calls. @@ -68,9 +69,9 @@ int test_flashdev_get_page_count( int *page_count ); -int test_flashdev_get_wb_size( +int test_flashdev_get_min_write_size( rtems_flashdev *flash, - size_t *write_block_size + size_t *min_write_size ); uint32_t test_flashdev_get_jedec_id( @@ -102,7 +103,7 @@ int test_flashdev_erase( size_t count ); -/* Find page info by offset handler */ +/* Get page info by offset handler */ int test_flashdev_get_page_by_off( rtems_flashdev *flash, off_t search_offset, @@ -115,7 +116,7 @@ int test_flashdev_get_page_by_off( return 0; } -/* Find page by index handler */ +/* Get page info by index handler */ int test_flashdev_get_page_by_index( rtems_flashdev *flash, off_t search_index, @@ -128,7 +129,7 @@ int test_flashdev_get_page_by_index( return 0; } -/* Page count handler */ +/* Get page count handler */ int test_flashdev_get_page_count( rtems_flashdev *flash, int *page_count @@ -138,13 +139,13 @@ int test_flashdev_get_page_count( return 0; } -/* Write block size handler */ -int test_flashdev_get_wb_size( +/* Get min. write size handler */ +int test_flashdev_get_min_write_size( rtems_flashdev *flash, - size_t *write_block_size + size_t *min_write_size ) { - *write_block_size = WB_SIZE; + *min_write_size = g_min_write_size; return 0; } @@ -230,8 +231,13 @@ int test_flashdev_erase( } /* Initialize Flashdev and underlying driver. */ -rtems_flashdev* test_flashdev_init(void) +rtems_flashdev* test_flashdev_init(size_t min_write_size) { + if (0 == min_write_size) { + return NULL; + } + + g_min_write_size = min_write_size; rtems_flashdev *flash = rtems_flashdev_alloc_and_init(sizeof(rtems_flashdev)); if (flash == NULL) { @@ -268,8 +274,32 @@ rtems_flashdev* test_flashdev_init(void) flash->get_page_info_by_offset = &test_flashdev_get_page_by_off; flash->get_page_info_by_index = &test_flashdev_get_page_by_index; flash->get_page_count = &test_flashdev_get_page_count; - flash->get_write_block_size = &test_flashdev_get_wb_size; + flash->get_min_write_size = &test_flashdev_get_min_write_size; flash->region_table = ftable; return flash; } + +/* Free Flashdev and underlying driver. */ +void test_flashdev_deinit( + rtems_flashdev* flash +) +{ + if (NULL != flash) + { + if (NULL != flash->driver) + { + free(flash->region_table); + } + if (NULL != flash->driver) + { + test_flashdev* flash_driver = (test_flashdev*) flash->driver; + if (NULL != flash_driver->data) + { + free( flash_driver->data); + } + 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 8b03959c42..ad995854ea 100644 --- a/testsuites/libtests/flashdev01/test_flashdev.h +++ b/testsuites/libtests/flashdev01/test_flashdev.h @@ -30,6 +30,8 @@ #include <dev/flash/flashdev.h> -rtems_flashdev* test_flashdev_init(void); +rtems_flashdev* test_flashdev_init(size_t min_write_size); + +void test_flashdev_deinit(rtems_flashdev* flash); #endif /* __TEST_FLASHDEV_H */ -- 2.34.1 _______________________________________________ devel mailing list devel@rtems.org http://lists.rtems.org/mailman/listinfo/devel