Random number generation

Hardware random number generation

int dm_rng_read(struct udevice *dev, void *buffer, size_t size)

read a random number seed from the rng device

Parameters

struct udevice *dev

random number generator device

void *buffer

input buffer to put the read random seed into

size_t size

number of random bytes to read

Description

The function blocks until the requested number of bytes is read.

Return

0 if OK, -ve on error

struct dm_rng_ops

operations for the hwrng uclass

Definition

struct dm_rng_ops {
  int (*read)(struct udevice *dev, void *data, size_t max);
};

Members

read

read a random bytes

The function blocks until the requested number of bytes is read.

read.dev: random number generator device read.data: input buffer to read the random seed into read.max: number of random bytes to read read.Return: 0 if OK, -ve on error

Description

This structures contains the function implemented by a hardware random number generation device.

Pseudo random number generation

void srand(unsigned int seed)

Set the random-number seed value

Parameters

unsigned int seed

New seed

Description

This can be used to restart the pseudo-random-number sequence from a known point. This affects future calls to rand() to start from that point

unsigned int rand(void)

Get a 32-bit pseudo-random number

Parameters

void

no arguments

Return

next random number in the sequence

unsigned int rand_r(unsigned int *seedp)

Get a 32-bit pseudo-random number

Parameters

unsigned int *seedp

seed value to use, updated on exit

Description

This version of the function allows multiple sequences to be used at the same time, since it requires the caller to store the seed value.

Return

next random number in the sequence