[PATCH] Add /dev/urandom device.

Juergen Kilb J.Kilb at phytec.de
Thu Jul 19 04:33:49 EDT 2012


Nice for testing purposes.

Signed-off-by: Juergen Kilb <J.Kilb at phytec.de>
---
 commands/stddev.c |   39 +++++++++++++++++++++++++++++++++++++++
 1 files changed, 39 insertions(+), 0 deletions(-)

diff --git a/commands/stddev.c b/commands/stddev.c
index 098aea8..b807df6 100644
--- a/commands/stddev.c
+++ b/commands/stddev.c
@@ -20,7 +20,9 @@
  */
 
 #include <common.h>
+#include <clock.h>
 #include <init.h>
+#include <stdlib.h>
 
 static ssize_t zero_read(struct cdev *cdev, void *buf, size_t count, loff_t offset, ulong flags)
 {
@@ -104,3 +106,40 @@ static int null_init(void)
 }
 
 device_initcall(null_init);
+
+static ssize_t urandom_read(struct cdev *cdev, void *buf, size_t count, loff_t offset, ulong flags)
+{
+	size_t i;
+	unsigned int *buffer;
+
+	buffer = (unsigned int *) buf;
+
+	for (i = 0; i < (count / sizeof(size_t)); i++)
+		buffer[i] = rand() | rand() << 16;
+
+	return count;
+}
+
+static struct file_operations urandomops = {
+	.read  = urandom_read,
+	.lseek = dev_lseek_default,
+};
+
+static int urandom_init(void)
+{
+	struct cdev *cdev;
+
+	cdev = xzalloc(sizeof(*cdev));
+
+	cdev->name = "urandom";
+	cdev->size = ~0;
+	cdev->ops = &urandomops;
+
+	devfs_create(cdev);
+
+	srand(get_time_ns());
+
+	return 0;
+}
+
+device_initcall(urandom_init);
-- 
1.7.0.4




More information about the barebox mailing list