summaryrefslogtreecommitdiff
path: root/cpukit/libblock/src/ramdisk-driver.c
diff options
context:
space:
mode:
authorThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-10-20 07:53:19 +0000
committerThomas Doerfler <Thomas.Doerfler@embedded-brains.de>2009-10-20 07:53:19 +0000
commite41369ef8cf419e3e9f5c3816f05c383a5f076f5 (patch)
tree709ed1a6ded82913d94ce062d30198790c2a7454 /cpukit/libblock/src/ramdisk-driver.c
parentb83c7ba9e5913b84f751b8124db3f651e0894354 (diff)
* libblock/include/rtems/diskdevs.h: Documentation. Added field to
rtems_disk_device. * libblock/include/rtems/blkdev.h: New request code RTEMS_BLKIO_DELETED. * libblock/src/diskdevs.c: Major rewrite. Changed the way disks are deleted. Disks will be now deleted if they are not in use or upon last release. The IO control handler will be invoked if a physical disk is deleted with the RTEMS_BLKIO_DELETED request code. Logical disks increase now the usage count of the associated physical disk. * libblock/include/rtems/ramdisk.h: Documentation. * libblock/src/ramdisk-driver.c: Compile trace support conditionally.
Diffstat (limited to 'cpukit/libblock/src/ramdisk-driver.c')
-rw-r--r--cpukit/libblock/src/ramdisk-driver.c45
1 files changed, 31 insertions, 14 deletions
diff --git a/cpukit/libblock/src/ramdisk-driver.c b/cpukit/libblock/src/ramdisk-driver.c
index 42e2a6a424..80503c9f3c 100644
--- a/cpukit/libblock/src/ramdisk-driver.c
+++ b/cpukit/libblock/src/ramdisk-driver.c
@@ -13,27 +13,36 @@
* @(#) $Id$
*/
-#include <stdio.h>
+/* FIXME: How to set this define? */
+#if !defined(RTEMS_RAMDISK_TRACE)
+ #define RTEMS_RAMDISK_TRACE 0
+#endif
+
#include <stdlib.h>
#include <errno.h>
#include <string.h>
-#include <inttypes.h>
+
+#if RTEMS_RAMDISK_TRACE
+ #include <stdio.h>
+#endif
#include <rtems.h>
#include <rtems/ramdisk.h>
-static void
-rtems_ramdisk_printf (const ramdisk *rd, const char *format, ...)
-{
- if (rd->trace)
- {
- va_list args;
- va_start (args, format);
- printf ("ramdisk:");
- vprintf (format, args);
- printf ("\n");
- }
-}
+#if RTEMS_RAMDISK_TRACE
+ static void
+ rtems_ramdisk_printf (const ramdisk *rd, const char *format, ...)
+ {
+ if (rd->trace)
+ {
+ va_list args;
+ va_start (args, format);
+ printf ("ramdisk:");
+ vprintf (format, args);
+ printf ("\n");
+ }
+ }
+#endif
static int
ramdisk_read(struct ramdisk *rd, rtems_blkdev_request *req)
@@ -42,14 +51,18 @@ ramdisk_read(struct ramdisk *rd, rtems_blkdev_request *req)
uint32_t i;
rtems_blkdev_sg_buffer *sg;
+#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
+#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
{
+#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk read: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
from + (sg->block * rd->block_size));
+#endif
memcpy(sg->buffer, from + (sg->block * rd->block_size), sg->length);
}
req->req_done(req->done_arg, RTEMS_SUCCESSFUL, 0);
@@ -63,13 +76,17 @@ ramdisk_write(struct ramdisk *rd, rtems_blkdev_request *req)
uint32_t i;
rtems_blkdev_sg_buffer *sg;
+#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: start=%d, blocks=%d",
req->bufs[0].block, req->bufnum);
+#endif
for (i = 0, sg = req->bufs; i < req->bufnum; i++, sg++)
{
+#if RTEMS_RAMDISK_TRACE
rtems_ramdisk_printf (rd, "ramdisk write: buf=%d block=%d length=%d off=%d addr=%p",
i, sg->block, sg->length, sg->block * rd->block_size,
to + (sg->block * rd->block_size));
+#endif
memcpy(to + (sg->block * rd->block_size), sg->buffer, sg->length);
}
req->req_done(req->done_arg, RTEMS_SUCCESSFUL, 0);