summaryrefslogtreecommitdiffstats
path: root/cpukit/libblock/src/blkdev.c
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2012-03-05 14:39:53 +0100
committerSebastian Huber <sebastian.huber@embedded-brains.de>2012-03-13 12:24:18 +0100
commit291c926449ffb0f249cb90e3957b65308f128955 (patch)
tree9483171b71cf401b17004cfa009f9d58ab609fcd /cpukit/libblock/src/blkdev.c
parentlibblock: New support functions (diff)
downloadrtems-291c926449ffb0f249cb90e3957b65308f128955.tar.bz2
libblock: Split file and simplify
Diffstat (limited to 'cpukit/libblock/src/blkdev.c')
-rw-r--r--cpukit/libblock/src/blkdev.c88
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;
}