summaryrefslogtreecommitdiffstats
path: root/cpukit/libmisc/devnull
diff options
context:
space:
mode:
authorSebastian Huber <sebastian.huber@embedded-brains.de>2011-05-13 13:46:43 +0000
committerSebastian Huber <sebastian.huber@embedded-brains.de>2011-05-13 13:46:43 +0000
commit158b416c7264d5f67b512c43fa5567e396ba774c (patch)
tree6c16bf09c4db4b7ef71b0f0616f360e559f15eb6 /cpukit/libmisc/devnull
parent2011-05-12 Joel Sherrill <joel.sherrilL@OARcorp.com> (diff)
downloadrtems-158b416c7264d5f67b512c43fa5567e396ba774c.tar.bz2
2011-05-13 Sebastian Huber <sebastian.huber@embedded-brains.de>
* libmisc/devnull/devzero.c, libmisc/devnull/devzero.h: New files. * libmisc/Makefile.am, Makefile.am, preinstall.am: Reflect changes above.
Diffstat (limited to 'cpukit/libmisc/devnull')
-rw-r--r--cpukit/libmisc/devnull/devzero.c88
-rw-r--r--cpukit/libmisc/devnull/devzero.h78
2 files changed, 166 insertions, 0 deletions
diff --git a/cpukit/libmisc/devnull/devzero.c b/cpukit/libmisc/devnull/devzero.c
new file mode 100644
index 0000000000..621d9a02fe
--- /dev/null
+++ b/cpukit/libmisc/devnull/devzero.c
@@ -0,0 +1,88 @@
+/*
+ * Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#ifdef HAVE_CONFIG_H
+#include "config.h"
+#endif
+
+#include <rtems/devzero.h>
+
+#include <string.h>
+
+#include <rtems/libio.h>
+
+rtems_device_driver dev_zero_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg __attribute__((unused))
+)
+{
+ return rtems_io_register_name(DEVZERO_DEVICE_NAME, major, 0);
+}
+
+rtems_device_driver dev_zero_open(
+ rtems_device_major_number major __attribute__((unused)),
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg __attribute__((unused))
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver dev_zero_close(
+ rtems_device_major_number major __attribute__((unused)),
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg __attribute__((unused))
+)
+{
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver dev_zero_read(
+ rtems_device_major_number major __attribute__((unused)),
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg __attribute__((unused))
+)
+{
+ rtems_libio_rw_args_t *rw = arg;
+
+ rw->bytes_moved = rw->count;
+ memset(rw->buffer, 0, rw->count);
+
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver dev_zero_write(
+ rtems_device_major_number major __attribute__((unused)),
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg
+)
+{
+ rtems_libio_rw_args_t *rw = arg;
+
+ rw->bytes_moved = rw->count;
+
+ return RTEMS_SUCCESSFUL;
+}
+
+rtems_device_driver dev_zero_control(
+ rtems_device_major_number major __attribute__((unused)),
+ rtems_device_minor_number minor __attribute__((unused)),
+ void *arg __attribute__((unused))
+)
+{
+ return RTEMS_IO_ERROR;
+}
diff --git a/cpukit/libmisc/devnull/devzero.h b/cpukit/libmisc/devnull/devzero.h
new file mode 100644
index 0000000000..7e5fb62a29
--- /dev/null
+++ b/cpukit/libmisc/devnull/devzero.h
@@ -0,0 +1,78 @@
+/*
+ * Copyright (c) 2011 embedded brains GmbH. All rights reserved.
+ *
+ * embedded brains GmbH
+ * Obere Lagerstr. 30
+ * 82178 Puchheim
+ * Germany
+ * <rtems@embedded-brains.de>
+ *
+ * The license and distribution terms for this file may be
+ * found in the file LICENSE in this distribution or at
+ * http://www.rtems.com/license/LICENSE.
+ *
+ * $Id$
+ */
+
+#ifndef _RTEMS_DEVZERO_H
+#define _RTEMS_DEVZERO_H
+
+#include <rtems/io.h>
+
+#ifdef __cplusplus
+extern "C" {
+#endif /* __cplusplus */
+
+#define DEVZERO_DEVICE_NAME "/dev/zero"
+
+#define DEVZERO_DRIVER_TABLE_ENTRY \
+ { \
+ dev_zero_initialize, \
+ dev_zero_open, \
+ dev_zero_close, \
+ dev_zero_read, \
+ dev_zero_write, \
+ dev_zero_control \
+ }
+
+rtems_device_driver dev_zero_initialize(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dev_zero_open(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dev_zero_close(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dev_zero_read(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dev_zero_write(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+rtems_device_driver dev_zero_control(
+ rtems_device_major_number major,
+ rtems_device_minor_number minor,
+ void *arg
+);
+
+#ifdef __cplusplus
+}
+#endif /* __cplusplus */
+
+#endif /* _RTEMS_DEVZERO_H */