summaryrefslogtreecommitdiffstats
path: root/commands/mem.c
diff options
context:
space:
mode:
authorSascha Hauer <s.hauer@pengutronix.de>2009-07-30 16:09:28 +0200
committerSascha Hauer <s.hauer@pengutronix.de>2009-07-30 16:09:28 +0200
commitd3e15e7eed461e5ffb7b9f7d90c992e577c3c441 (patch)
tree9ed577f800d0095be173ef0e79d4579a1c372bf0 /commands/mem.c
parent9e3f6a8bbc47af8738e0fb7bf0799a1c2478c51d (diff)
downloadbarebox-d3e15e7eed461e5ffb7b9f7d90c992e577c3c441.tar.gz
barebox-d3e15e7eed461e5ffb7b9f7d90c992e577c3c441.tar.xz
implement /dev/zero
Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
Diffstat (limited to 'commands/mem.c')
-rw-r--r--commands/mem.c28
1 files changed, 28 insertions, 0 deletions
diff --git a/commands/mem.c b/commands/mem.c
index ee09ed0303..2f91ff3cea 100644
--- a/commands/mem.c
+++ b/commands/mem.c
@@ -576,3 +576,31 @@ static int mem_init(void)
device_initcall(mem_init);
+static ssize_t zero_read(struct cdev *cdev, void *buf, size_t count, ulong offset, ulong flags)
+{
+ memset(buf, 0, count);
+ return count;
+}
+
+static struct file_operations zeroops = {
+ .read = zero_read,
+ .lseek = dev_lseek_default,
+};
+
+static int zero_init(void)
+{
+ struct cdev *cdev;
+
+ cdev = xzalloc(sizeof (*cdev));
+
+ cdev->name = "zero";
+ cdev->size = ~0;
+ cdev->ops = &zeroops;
+
+ devfs_create(cdev);
+
+ return 0;
+}
+
+device_initcall(zero_init);
+