diff options
author | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-03-05 14:39:53 +0100 |
---|---|---|
committer | Sebastian Huber <sebastian.huber@embedded-brains.de> | 2012-03-13 12:24:18 +0100 |
commit | 291c926449ffb0f249cb90e3957b65308f128955 (patch) | |
tree | 9483171b71cf401b17004cfa009f9d58ab609fcd /cpukit/libblock/src/blkdev.c | |
parent | 3ee7b84394d3747d9b8010006c3e75ac10839abe (diff) |
libblock: Split file and simplify
Diffstat (limited to 'cpukit/libblock/src/blkdev.c')
-rw-r--r-- | cpukit/libblock/src/blkdev.c | 88 |
1 files changed, 11 insertions, 77 deletions
diff --git a/cpukit/libblock/src/blkdev.c b/cpukit/libblock/src/blkdev.c index 3e950d6a72..83ea563962 100644 --- a/cpukit/libblock/src/blkdev.c +++ b/cpukit/libblock/src/blkdev.c @@ -180,87 +180,21 @@ rtems_blkdev_generic_ioctl( rtems_libio_ioctl_args_t *args = arg; rtems_libio_t *iop = args->iop; rtems_disk_device *dd = iop->data1; - int rc; - switch (args->command) + if (args->command != RTEMS_BLKIO_REQUEST) { - case RTEMS_BLKIO_GETMEDIABLKSIZE: - *((uint32_t *) args->buffer) = dd->media_block_size; - args->ioctl_return = 0; - break; - - case RTEMS_BLKIO_GETBLKSIZE: - *((uint32_t *) args->buffer) = dd->block_size; - args->ioctl_return = 0; - break; - - case RTEMS_BLKIO_SETBLKSIZE: - dd->block_size = *((uint32_t *) args->buffer); - args->ioctl_return = 0; - break; - - case RTEMS_BLKIO_GETSIZE: - *((rtems_blkdev_bnum *) args->buffer) = dd->size; - args->ioctl_return = 0; - break; - - case RTEMS_BLKIO_SYNCDEV: - rc = rtems_bdbuf_syncdev(dd); - args->ioctl_return = (uint32_t) (rc == RTEMS_SUCCESSFUL ? 0 : -1); - break; - - case RTEMS_BLKIO_GETDISKDEV: - *((rtems_disk_device **) args->buffer) = dd; - args->ioctl_return = 0; - break; - - case RTEMS_BLKIO_REQUEST: - /* - * It is not allowed to directly access the driver circumventing - * the cache. - */ - args->ioctl_return = (uint32_t) -1; - break; - - default: - args->ioctl_return = (uint32_t) dd->ioctl(dd->phys_dev, - args->command, - args->buffer); - break; + args->ioctl_return = (uint32_t) dd->ioctl(dd, + args->command, + args->buffer); } - - return RTEMS_SUCCESSFUL; -} - -int -rtems_blkdev_ioctl(rtems_disk_device *dd, uint32_t req, void *argp) -{ - size_t *arg_size = argp; - int rc = 0; - - switch (req) + else { - case RTEMS_BLKIO_GETMEDIABLKSIZE: - *arg_size = dd->media_block_size; - break; - - case RTEMS_BLKIO_GETBLKSIZE: - *arg_size = dd->block_size; - break; - - case RTEMS_BLKIO_SETBLKSIZE: - dd->block_size = *arg_size; - break; - - case RTEMS_BLKIO_GETSIZE: - *arg_size = dd->size; - break; - - default: - errno = EINVAL; - rc = -1; - break; + /* + * It is not allowed to directly access the driver circumventing the + * cache. + */ + args->ioctl_return = (uint32_t) -1; } - return rc; + return RTEMS_SUCCESSFUL; } |