xref: /kvm-unit-tests/lib/rand.h (revision 6b801c8981f74d75419d77e031dd37f5ad356efe)
1*e8337330SNina Schoetterl-Glausch /* SPDX-License-Identifier: GPL-2.0-only */
2*e8337330SNina Schoetterl-Glausch /*
3*e8337330SNina Schoetterl-Glausch  * (pseudo) random functions
4*e8337330SNina Schoetterl-Glausch  *
5*e8337330SNina Schoetterl-Glausch  * Copyright IBM Corp. 2024
6*e8337330SNina Schoetterl-Glausch  */
7*e8337330SNina Schoetterl-Glausch #ifndef _RAND_H_
8*e8337330SNina Schoetterl-Glausch #define _RAND_H_
9*e8337330SNina Schoetterl-Glausch 
10*e8337330SNina Schoetterl-Glausch #include <stdint.h>
11*e8337330SNina Schoetterl-Glausch 
12*e8337330SNina Schoetterl-Glausch /* Non cryptographically secure PRNG */
13*e8337330SNina Schoetterl-Glausch typedef struct {
14*e8337330SNina Schoetterl-Glausch 	uint32_t hash[8];
15*e8337330SNina Schoetterl-Glausch 	uint8_t next_word;
16*e8337330SNina Schoetterl-Glausch } prng_state;
17*e8337330SNina Schoetterl-Glausch prng_state prng_init(uint64_t seed);
18*e8337330SNina Schoetterl-Glausch uint32_t prng32(prng_state *state);
19*e8337330SNina Schoetterl-Glausch uint64_t prng64(prng_state *state);
20*e8337330SNina Schoetterl-Glausch 
21*e8337330SNina Schoetterl-Glausch #endif /* _RAND_H_ */
22