From 9695ea005d4af93dcd60f74f10fd3c54499a182f Mon Sep 17 00:00:00 2001 From: Nicholas Noll Date: Thu, 11 Nov 2021 16:31:58 -0800 Subject: chore: split up base library into individual files for smaller binaries --- sys/base/rng/base.c | 24 ++++++++++++++++++++++++ 1 file changed, 24 insertions(+) create mode 100644 sys/base/rng/base.c (limited to 'sys/base/rng/base.c') diff --git a/sys/base/rng/base.c b/sys/base/rng/base.c new file mode 100644 index 0000000..9ec496e --- /dev/null +++ b/sys/base/rng/base.c @@ -0,0 +1,24 @@ +#include "internal.h" + +static uint64 +splitmix64(struct Mix *state) +{ + uint64 result = state->s; + + state->s = result + 0x9E3779B97f4A7C15; + result = (result ^ (result >> 30)) * 0xBF58476D1CE4E5B9; + result = (result ^ (result >> 27)) * 0x94D049BB133111EB; + return result ^ (result >> 31); +} + +int +rng·init(uint64 seed) +{ + int i; + Mix smstate = {seed}; + + for(i=0; i < 4; i++) + rng·RNG.s[i] = splitmix64(&smstate); + + return 0; +} -- cgit v1.2.1