[PATCH] Add /dev/urandom device.

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

 



Nice for testing purposes.

Signed-off-by: Juergen Kilb <J.Kilb@xxxxxxxxx>
---
 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


_______________________________________________
barebox mailing list
barebox@xxxxxxxxxxxxxxxxxxx
http://lists.infradead.org/mailman/listinfo/barebox


[Index of Archives]     [Linux Embedded]     [Linux USB Devel]     [Linux Audio Users]     [Yosemite News]     [Linux Kernel]     [Linux SCSI]     [XFree86]

  Powered by Linux