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