diff options
author | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-10-20 07:53:19 +0000 |
---|---|---|
committer | Thomas Doerfler <Thomas.Doerfler@embedded-brains.de> | 2009-10-20 07:53:19 +0000 |
commit | e41369ef8cf419e3e9f5c3816f05c383a5f076f5 (patch) | |
tree | 709ed1a6ded82913d94ce062d30198790c2a7454 /cpukit/libblock/src/ramdisk-driver.c | |
parent | b83c7ba9e5913b84f751b8124db3f651e0894354 (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.c | 45 |
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); |