Exemple #1
0
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);
}
Exemple #2
0
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;
}