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 void change_block_size(void) { int rv = 0; int fd = open("/dev/rda", O_RDWR); rtems_test_assert(fd >= 0); rv = rtems_disk_fd_set_block_size(fd, BLOCK_SIZE_B); rtems_test_assert(rv == 0); rv = close(fd); rtems_test_assert(rv == 0); }
/* * The test sequence */ static void test( void ) { rtems_status_code sc; int rv; char device_name[] = "/dev/sda1"; uint32_t block_size; rtems_blkdev_bnum block_number; rtems_blkdev_bnum blocks_allocated; int file_descriptor; uint8_t fill_pattern = 0; sc = rtems_disk_io_initialize(); rtems_test_assert( sc == RTEMS_SUCCESSFUL ); block_size = 512; block_number = 4 * 2 * 1024; blocks_allocated = 8; sc = rtems_sparse_disk_create_and_register( "/dev/sda1", block_size, blocks_allocated, block_number, fill_pattern ); rtems_test_assert( RTEMS_SUCCESSFUL == sc ); /* Test reading and writing with sector size 512 and 8 such sectors * allocated. Block size will default to 512 */ test_device_io( device_name, block_size, block_size, block_number, blocks_allocated, fill_pattern ); file_descriptor = open( device_name, O_RDWR ); rtems_test_assert( 0 <= file_descriptor ); rv = rtems_disk_fd_set_block_size( file_descriptor, blocks_allocated * block_size ); rtems_test_assert( 0 == rv ); rv = close( file_descriptor ); rtems_test_assert( 0 == rv ); /* Block size was increased to 4k. Thus all to allocated disk space * corresponds to one block. Repeat the read write tests */ test_device_io( device_name, block_size * blocks_allocated, block_size, block_number, 1, fill_pattern ); rv = unlink( device_name ); rtems_test_assert( 0 == rv ); /* Do testing with a statically allocated disk. This permits white box * testing */ test_with_whitebox( device_name ); }