summaryrefslogtreecommitdiffstats
path: root/cpukit/libblock/src/nvdisk-sram.c
diff options
context:
space:
mode:
authorChris Johns <chrisj@rtems.org>2008-05-01 04:15:36 +0000
committerChris Johns <chrisj@rtems.org>2008-05-01 04:15:36 +0000
commit5a2b5b22c85a635b14a68242f4f1f106421e28d4 (patch)
treed60882b8cd1147d025b249995d34462ff5e0d279 /cpukit/libblock/src/nvdisk-sram.c
parent2008-05-01 Maarten Van Es <maarten@mind.be> (diff)
downloadrtems-5a2b5b22c85a635b14a68242f4f1f106421e28d4.tar.bz2
2008-05-01 Chris Johns <chrisj@rtems.org>
* libblock/include/rtems/nvdisk-sram.h, libblock/include/rtems/nvdisk.h, libblock/src/nvdisk-sram.c, libblock/src/nvdisk.c: New. A Non-volatile memory disk drive. * Makefile.am, preinstall.am, libblock/Makefile.am: Updated for the NV disk driver.
Diffstat (limited to 'cpukit/libblock/src/nvdisk-sram.c')
-rw-r--r--cpukit/libblock/src/nvdisk-sram.c64
1 files changed, 64 insertions, 0 deletions
diff --git a/cpukit/libblock/src/nvdisk-sram.c b/cpukit/libblock/src/nvdisk-sram.c
new file mode 100644
index 0000000000..aa78689ec7
--- /dev/null
+++ b/cpukit/libblock/src/nvdisk-sram.c
@@ -0,0 +1,64 @@
+/*
+ * $Id$
+ *
+ * RTEMS Project (http://www.rtems.org/)
+ *
+ * Copyright 2007 Chris Johns (chrisj@rtems.org)
+ */
+/**
+ * Provide SRAM support for the NV Disk.
+ */
+
+#include <stdio.h>
+#include <errno.h>
+
+#include <rtems.h>
+
+#include <rtems/nvdisk-sram.h>
+
+#ifndef NVDISK_SRAM_ERROR_TRACE
+#define NVDISK_SRAM_ERROR_TRACE (0)
+#endif
+
+static int
+rtems_nvdisk_sram_read (uint32_t device,
+ uint32_t flags,
+ uint32_t base,
+ uint32_t offset,
+ void* buffer,
+ uint32_t size)
+{
+ memcpy (buffer, (char*) (base + offset), size);
+ return 0;
+}
+
+static int
+rtems_nvdisk_sram_write (uint32_t device,
+ uint32_t flags,
+ uint32_t base,
+ uint32_t offset,
+ const void* buffer,
+ uint32_t size)
+{
+ memcpy ((char*) (base + offset), buffer, size);
+ return 0;
+}
+
+static int
+rtems_nvdisk_sram_verify (uint32_t device,
+ uint32_t flags,
+ uint32_t base,
+ uint32_t offset,
+ const void* buffer,
+ uint32_t size)
+{
+ return memcmp ((char*) (base + offset), buffer, size) == 0 ? 0 : EIO;
+}
+
+
+const rtems_nvdisk_driver_handlers rtems_nvdisk_sram_handlers =
+{
+ read: rtems_nvdisk_sram_read,
+ write: rtems_nvdisk_sram_write,
+ verify: rtems_nvdisk_sram_verify
+};