static void bdbuf_tests_task_0_test_7 (bdbuf_task_control* tc) { rtems_status_code sc; bool passed; int i; rtems_bdbuf_buffer* bd; rtems_chain_control buffers; dev_t device; /* * Set task control's passed to false to handle a timeout. */ tc->passed = false; passed = true; /* * Clear any disk settings. */ bdbuf_clear_disk_driver_watch (tc); bdbuf_set_disk_driver_action (tc, BDBUF_DISK_NOOP); device = rtems_filesystem_make_dev_t (tc->major, tc->minor); /* * Get the blocks 0 -> 4 and hold them. */ rtems_chain_initialize_empty (&buffers); for (i = 0; (i < 5) && passed; i++) { bdbuf_test_printf ("%s: rtems_bdbuf_read[%d]: ", tc->name, i); sc = rtems_bdbuf_get (device, i, &bd); if (!bdbuf_test_print_sc (sc, true)) passed = false; rtems_chain_append (&buffers, &bd->link); } for (i = 0; (i < 5) && passed; i++) { bdbuf_test_printf ("%s: rtems_bdbuf_release_modified[%d]: ", tc->name, i); bd = (rtems_bdbuf_buffer*) rtems_chain_get (&buffers); passed = bdbuf_test_print_sc (rtems_bdbuf_release_modified (bd), true); } if (passed) { bdbuf_test_printf ("%s: rtems_bdbuf_syncdev[%d:%d]: ", tc->name, i, rtems_filesystem_dev_major_t (device), rtems_filesystem_dev_minor_t (device)); passed = bdbuf_test_print_sc (rtems_bdbuf_syncdev (device), true); } tc->passed = passed; tc->test = 0; }
rtems_status_code rtems_io_lookup_name( const char *name, rtems_driver_name_t *device_info ) { rtems_status_code sc = RTEMS_SUCCESSFUL; struct stat st; int rv = stat( name, &st ); if ( rv == 0 && S_ISCHR( st.st_mode ) ) { device_info->device_name = name; device_info->device_name_length = strlen( name ); device_info->major = rtems_filesystem_dev_major_t( st.st_rdev ); device_info->minor = rtems_filesystem_dev_minor_t( st.st_rdev ); } else { sc = RTEMS_UNSATISFIED; } return sc; }
/* ramdisk_ioctl -- * IOCTL handler for RAM disk device. * * PARAMETERS: * dev - device number (major, minor number) * req - IOCTL request code * argp - IOCTL argument * * RETURNS: * IOCTL return value */ static int ramdisk_ioctl(dev_t dev, uint32_t req, void *argp) { switch (req) { case BLKIO_REQUEST: { rtems_device_minor_number minor; blkdev_request *r = argp; struct ramdisk *rd; minor = rtems_filesystem_dev_minor_t(dev); if ((minor >= nramdisks) || !ramdisk[minor].initialized) { errno = ENODEV; return -1; } rd = ramdisk + minor; switch (r->req) { case BLKDEV_REQ_READ: return ramdisk_read(rd, r); case BLKDEV_REQ_WRITE: return ramdisk_write(rd, r); default: errno = EBADRQC; return -1; } break; } default: errno = EBADRQC; return -1; } }