9
0
Fork 0

include support for a simple pseudo number generator

Signed-off-by: Sascha Hauer <s.hauer@pengutronix.de>
This commit is contained in:
Sascha Hauer 2010-06-11 14:10:36 +02:00
parent 600c0e987e
commit 738d70e430
4 changed files with 44 additions and 0 deletions

View File

@ -16,6 +16,7 @@
#include <linux/types.h>
#include <param.h>
#include <malloc.h>
#include <stdlib.h>
#include <asm/byteorder.h> /* for nton* / ntoh* stuff */

16
include/stdlib.h Normal file
View File

@ -0,0 +1,16 @@
#ifndef __STDLIB_H
#define __STDLIB_H
#define RAND_MAX 32767
/* return a pseudo-random integer in the range [0, RAND_MAX] */
unsigned int rand(void);
/* set the seed for rand () */
void srand(unsigned int seed);
/* fill a buffer with pseudo-random data */
void get_random_bytes(char *buf, int len);
#endif /* __STDLIB_H */

View File

@ -28,6 +28,7 @@ obj-$(CONFIG_GENERIC_FIND_NEXT_BIT) += find_next_bit.o
obj-y += glob.o
obj-y += notifier.o
obj-y += copy_file.o
obj-y += random.o
obj-y += lzo/
obj-$(CONFIG_LZO_DECOMPRESS) += decompress_unlzo.o
obj-$(CONFIG_PROCESS_ESCAPE_SEQUENCE) += process_escape_sequence.o

26
lib/random.c Normal file
View File

@ -0,0 +1,26 @@
#include <common.h>
#include <stdlib.h>
static unsigned int random_seed;
#if RAND_MAX > 32767
#error this rand implementation is for RAND_MAX < 32678 only.
#endif
unsigned int rand(void)
{
random_seed = random_seed * 1103515245 + 12345;
return (random_seed / 65536) % (RAND_MAX + 1);
}
void srand(unsigned int seed)
{
random_seed = seed;
}
void get_random_bytes(char *buf, int len)
{
while (len--)
*buf++ = rand() % 256;
}