[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