static void test_block_io_control_api(dev_t dev, ramdisk *rd) { rtems_status_code sc = RTEMS_SUCCESSFUL; rtems_disk_device *dd = NULL; const rtems_disk_device *fd_dd = NULL; int fd = -1; int rv = -1; uint32_t value = 0; rtems_blkdev_bnum block_count = 0; sc = rtems_disk_create_phys(dev, BLOCK_SIZE, BLOCK_COUNT, ramdisk_ioctl, rd, "/dev/rda"); ASSERT_SC(sc); dd = rtems_disk_obtain(dev); rtems_test_assert(dd != NULL); fd = open("/dev/rda", O_RDWR); rtems_test_assert(fd >= 0); value = 0; rv = rtems_disk_fd_get_media_block_size(fd, &value); rtems_test_assert(rv == 0); rtems_test_assert(value == BLOCK_SIZE); value = 0; rv = rtems_disk_fd_get_block_size(fd, &value); rtems_test_assert(rv == 0); rtems_test_assert(value == BLOCK_SIZE); value = 1024; rv = rtems_disk_fd_set_block_size(fd, value); rtems_test_assert(rv == 0); value = 0; rv = rtems_disk_fd_get_block_size(fd, &value); rtems_test_assert(rv == 0); rtems_test_assert(value == 1024); block_count = 0; rv = rtems_disk_fd_get_block_count(fd, &block_count); rtems_test_assert(rv == 0); rtems_test_assert(block_count == BLOCK_COUNT); rv = rtems_disk_fd_get_disk_device(fd, &fd_dd); rtems_test_assert(rv == 0); rtems_test_assert(fd_dd == dd); rv = rtems_disk_fd_sync(fd); rtems_test_assert(rv == 0); rv = close(fd); rtems_test_assert(rv == 0); sc = rtems_disk_release(dd); ASSERT_SC(sc); sc = rtems_disk_delete(dev); ASSERT_SC(sc); }
static int rtems_shell_main_blksync( int argc, char *argv[] ) { const char* driver = NULL; int arg; int fd; for (arg = 1; arg < argc; arg++) { if (argv[arg][0] == '-') { fprintf( stderr, "%s: invalid option: %s\n", argv[0], argv[arg]); return 1; } else { if (!driver) driver = argv[arg]; else { fprintf( stderr, "%s: only one driver name allowed: %s\n", argv[0], argv[arg]); return 1; } } } fd = open (driver, O_WRONLY, 0); if (fd < 0) { fprintf( stderr, "%s: driver open failed: %s\n", argv[0], strerror (errno)); return 1; } if (rtems_disk_fd_sync (fd) < 0) { fprintf( stderr, "%s: driver sync failed: %s\n", argv[0], strerror (errno)); return 1; } close (fd); return 0; }