[PATCH] Add /dev/urandom device.

Sascha Hauer s.hauer at pengutronix.de
Fri Jul 27 04:30:58 EDT 2012


On Thu, Jul 19, 2012 at 10:33:49AM +0200, Juergen Kilb wrote:
> Nice for testing purposes.

Can we have an extra file with an extra config option for this? I agree
this is nice for debugging, but no need to bloat every build with it.

Sascha

> 
> 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
> 
> 

-- 
Pengutronix e.K.                           |                             |
Industrial Linux Solutions                 | http://www.pengutronix.de/  |
Peiner Str. 6-8, 31137 Hildesheim, Germany | Phone: +49-5121-206917-0    |
Amtsgericht Hildesheim, HRA 2686           | Fax:   +49-5121-206917-5555 |



More information about the barebox mailing list