diff options
Diffstat (limited to 'testsuites/samples/fileio')
-rw-r--r-- | testsuites/samples/fileio/init.c | 67 |
1 files changed, 33 insertions, 34 deletions
diff --git a/testsuites/samples/fileio/init.c b/testsuites/samples/fileio/init.c index f8c33fc261..5c63744e9a 100644 --- a/testsuites/samples/fileio/init.c +++ b/testsuites/samples/fileio/init.c @@ -325,23 +325,9 @@ shell_bdbuf_trace (int argc, char* argv[]) } static int -disk_test_set_block_size (dev_t dev, size_t size) +disk_test_set_block_size (rtems_disk_device *dd, size_t size) { - rtems_disk_device* dd; - int rc; - - dd = rtems_disk_obtain (dev); - if (!dd) - { - printf ("error: cannot obtain disk\n"); - return 1; - } - - rc = dd->ioctl (dd, RTEMS_BLKIO_SETBLKSIZE, &size); - - rtems_disk_release (dd); - - return rc; + return dd->ioctl (dd, RTEMS_BLKIO_SETBLKSIZE, &size); } static int @@ -353,37 +339,50 @@ disk_test_write_blocks (dev_t dev, int start, int count, size_t size) int i; rtems_bdbuf_buffer* bd; rtems_status_code sc; + int rv = 0; + rtems_disk_device* dd; + + dd = rtems_disk_obtain (dev); + if (!dd) + { + printf ("error: cannot obtain disk\n"); + rv = 1; + } - if (disk_test_set_block_size (dev, size) < 0) + if (rv == 0 && disk_test_set_block_size (dd, size) < 0) { printf ("error: set block size failed: %s\n", strerror (errno)); - return 1; + rv = 1; } - for (block = start; block < (start + count); block++) + for (block = start; rv == 0 && block < (start + count); block++) { - sc = rtems_bdbuf_read (dev, block, &bd); - if (sc != RTEMS_SUCCESSFUL) + sc = rtems_bdbuf_read (dd, block, &bd); + if (sc == RTEMS_SUCCESSFUL) { - printf ("error: get block %d bd failed: %s\n", - block, rtems_status_text (sc)); - return 1; - } + ip = (uint32_t*) bd->buffer; + for (i = 0; i < (size / sizeof (uint32_t)); i++, ip++, value++) + *ip = (size << 16) | value; - ip = (uint32_t*) bd->buffer; - for (i = 0; i < (size / sizeof (uint32_t)); i++, ip++, value++) - *ip = (size << 16) | value; - - sc = rtems_bdbuf_release_modified (bd); - if (sc != RTEMS_SUCCESSFUL) + sc = rtems_bdbuf_release_modified (bd); + if (sc != RTEMS_SUCCESSFUL) + { + printf ("error: release block %d bd failed: %s\n", + block, rtems_status_text (sc)); + rv = 1; + } + } + else { - printf ("error: release block %d bd failed: %s\n", + printf ("error: get block %d bd failed: %s\n", block, rtems_status_text (sc)); - return 1; + rv = 1; } } - return 0; + rtems_disk_release (dd); + + return rv; } static int |