Lines Matching full:state
4 * Currently uses SHA-256 to scramble the PRNG state.
146 prng_state state = { .next_word = 0 }; in prng_init() local
149 sha256_hash(ARRAY_SIZE(seed_arr), &seed_arr, &state.hash); in prng_init()
150 return state; in prng_init()
153 static void prng_scramble(prng_state *state) in prng_scramble() argument
157 memcpy(input, state->hash, sizeof(state->hash)); in prng_scramble()
158 sha256_hash(ARRAY_SIZE(input), &input, &state->hash); in prng_scramble()
159 state->next_word = 0; in prng_scramble()
162 uint32_t prng32(prng_state *state) in prng32() argument
164 if (state->next_word < ARRAY_SIZE(state->hash)) in prng32()
165 return state->hash[state->next_word++]; in prng32()
167 prng_scramble(state); in prng32()
168 return prng32(state); in prng32()
171 uint64_t prng64(prng_state *state) in prng64() argument
174 uint64_t high = prng32(state); in prng64()
176 return high << 32 | prng32(state); in prng64()